summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2019-01-04 16:28:11 -0800
committerYigit Boyar <yboyar@google.com>2019-01-04 16:56:43 -0800
commitc1c4f46b41afaed79f2e4cf132eb925603d6345f (patch)
tree541b5bc494a89d1f5737bbcd0208413dda22adbe /compiler
parentbcf66b363dcd5a038abb8934db1ff2acfe12737e (diff)
downloaddata-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.kt6
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 {