diff options
author | Jake Wharton <jakew@google.com> | 2020-04-23 16:02:32 -0400 |
---|---|---|
committer | Jake Wharton <jakew@google.com> | 2020-04-24 02:28:41 +0000 |
commit | 9d9b437bf5f6ea210c4b75b0bba08b61df6015f9 (patch) | |
tree | 8261d98e267bf05ff586a2f915e0dfaade7ad77d | |
parent | 9162ebbad769ab02cd6a02ea0152961bbf35636e (diff) | |
download | data-binding-9d9b437bf5f6ea210c4b75b0bba08b61df6015f9.tar.gz |
Ignore merge tags with IDs
Bug: 154747638
Test: ../base/bazel/bazel test //tools/data-binding/...
Change-Id: Ib9dee8548b96c8917358897f9c78107b4a4cc202
-rw-r--r-- | compilerCommon/src/main/kotlin/android/databinding/tool/writer/ViewBinder.kt | 5 | ||||
-rw-r--r-- | compilerCommon/src/test/kotlin/android/databinding/tool/writer/ViewBinderGenerateJavaTest.kt | 20 |
2 files changed, 24 insertions, 1 deletions
diff --git a/compilerCommon/src/main/kotlin/android/databinding/tool/writer/ViewBinder.kt b/compilerCommon/src/main/kotlin/android/databinding/tool/writer/ViewBinder.kt index c4bc938b..6d271b57 100644 --- a/compilerCommon/src/main/kotlin/android/databinding/tool/writer/ViewBinder.kt +++ b/compilerCommon/src/main/kotlin/android/databinding/tool/writer/ViewBinder.kt @@ -111,7 +111,10 @@ fun BaseLayoutModel.toViewBinder(): ViewBinder { ) } - val bindings = sortedTargets.filter { it.id != null }.map { it.toBinding() } + val bindings = sortedTargets + .filter { it.id != null } + .filter { it.viewName != "merge" } // <merge> can have ID but it's ignored at runtime. + .map { it.toBinding() } val rootNode = parseRootNode(rClassName, bindings) return ViewBinder( generatedTypeName = ClassName.get(bindingClassPackage, bindingClassName), diff --git a/compilerCommon/src/test/kotlin/android/databinding/tool/writer/ViewBinderGenerateJavaTest.kt b/compilerCommon/src/test/kotlin/android/databinding/tool/writer/ViewBinderGenerateJavaTest.kt index dcc2bdf3..f4a805a2 100644 --- a/compilerCommon/src/test/kotlin/android/databinding/tool/writer/ViewBinderGenerateJavaTest.kt +++ b/compilerCommon/src/test/kotlin/android/databinding/tool/writer/ViewBinderGenerateJavaTest.kt @@ -700,4 +700,24 @@ class ViewBinderGenerateJavaTest { doesNotContain("two") } } + + @Test fun mergeWithIdAndInclude() { + // https://issuetracker.google.com/154747638 + // Note: This bug only manifests when there's a nested <include> the <merge>. + + layouts.write("simple", "layout", "<View/>") + layouts.write("merge_with_id", "layout", """ + <merge + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/main_content" + > + <include layout="@layout/simple"/> + </merge> + """.trimIndent()) + + val mergeWithId = layouts.parse().getValue("merge_with_id") + mergeWithId.toViewBinder().toJavaFile().assert { + doesNotContain("mainContent") + } + } } |