diff options
author | Yigit Boyar <yboyar@google.com> | 2019-01-04 16:28:11 -0800 |
---|---|---|
committer | Yigit Boyar <yboyar@google.com> | 2019-01-04 16:56:43 -0800 |
commit | c1c4f46b41afaed79f2e4cf132eb925603d6345f (patch) | |
tree | 541b5bc494a89d1f5737bbcd0208413dda22adbe /compiler | |
parent | bcf66b363dcd5a038abb8934db1ff2acfe12737e (diff) | |
download | data-binding-c1c4f46b41afaed79f2e4cf132eb925603d6345f.tar.gz |
Better support for generics
This CL fixes a bug where we are unable to declare local variables
with the correct type if the variable has wildcard generics.
This was because we use ModelClass's toCode method, which is not
really desired unless we are trying to access that ModelClass in
code (rather than declaring a variable with its type).
This CL changes code generater to use TypeName instead when declaring
fields.
Bug: 119960651
Bug: 116821433
Test: GenericTest in KotlinTestApp
Change-Id: I7075bd533ea63570be0ced3b80a1ea03dfd1e56b
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt index 69853d91..3b8fa997 100644 --- a/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt +++ b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt @@ -956,17 +956,17 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder, val libTypes: LibTypes block("protected void executeBindings()") { val tmpDirtyFlags = FlagSet(mDirtyFlags.buckets) tmpDirtyFlags.localName = "dirtyFlags"; - for (i in (0..mDirtyFlags.buckets.size - 1)) { + for (i in (0 until mDirtyFlags.buckets.size)) { nl("${tmpDirtyFlags.type} ${tmpDirtyFlags.localValue(i)} = 0;") } block("synchronized(this)") { - for (i in (0..mDirtyFlags.buckets.size - 1)) { + for (i in (0 until mDirtyFlags.buckets.size)) { nl("${tmpDirtyFlags.localValue(i)} = ${mDirtyFlags.localValue(i)};") nl("${mDirtyFlags.localValue(i)} = 0;") } } model.pendingExpressions.filter { it.needsLocalField }.forEach { - nl("${it.resolvedType.toJavaCode()} ${it.executePendingLocalName} = ${if (it.isVariable()) it.fieldName else it.defaultValue};") + nl("${it.resolvedType.typeName} ${it.executePendingLocalName} = ${if (it.isVariable()) it.fieldName else it.defaultValue};") } L.d("writing executePendingBindings for %s", className) do { |