diff options
author | George Mount <mount@google.com> | 2017-11-27 16:53:39 -0800 |
---|---|---|
committer | George Mount <mount@google.com> | 2017-11-30 13:07:42 -0800 |
commit | 0e5980008a7d2b0945ff7fe1e9409aa138adc949 (patch) | |
tree | e57c91451832f855ec54fd25c1df1dcc38ad74d9 /compiler/src/main/java/android/databinding/tool/reflection | |
parent | 0835ba50d395456512215d72b6b4853c9710c191 (diff) | |
download | data-binding-0e5980008a7d2b0945ff7fe1e9409aa138adc949.tar.gz |
Fix problem with wrong InverseBindingAdapter being chosen.
Bug: 65167377
The wrong inverse binding adapter was being chosen because priority
was given improperly. This CL adjusts the way priority is given
so that it is consistent between parameters accepting arguments
and return values being set to values.
Test: CollisionAdapterTest
Change-Id: I6e5c5a77d664ddda29313e3570fc579af70a1fd4
Diffstat (limited to 'compiler/src/main/java/android/databinding/tool/reflection')
3 files changed, 32 insertions, 6 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/reflection/InjectedClass.java b/compiler/src/main/java/android/databinding/tool/reflection/InjectedClass.java index eb83fcd2..ca7f3e5a 100644 --- a/compiler/src/main/java/android/databinding/tool/reflection/InjectedClass.java +++ b/compiler/src/main/java/android/databinding/tool/reflection/InjectedClass.java @@ -16,8 +16,12 @@ package android.databinding.tool.reflection; +import android.databinding.tool.ext.ExtKt; import android.databinding.tool.util.StringUtils; +import com.squareup.javapoet.ClassName; +import com.squareup.javapoet.TypeName; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -226,6 +230,11 @@ public class InjectedClass extends ModelClass { } @Override + public TypeName getTypeName() { + return ExtKt.toTypeName(mClassName); + } + + @Override public String toString() { return "Injected Class: " + mClassName; } diff --git a/compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java b/compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java index e4351222..d4a022af 100644 --- a/compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java +++ b/compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java @@ -16,11 +16,14 @@ package android.databinding.tool.reflection; import android.databinding.Bindable; +import android.databinding.tool.ext.ExtKt; import android.databinding.tool.reflection.Callable.Type; import android.databinding.tool.util.L; import android.databinding.tool.util.StringUtils; import com.google.common.collect.ImmutableMap; +import com.squareup.javapoet.ClassName; +import com.squareup.javapoet.TypeName; import org.jetbrains.annotations.NotNull; @@ -679,4 +682,19 @@ public abstract class ModelClass { } return fieldName; } + + public TypeName getTypeName() { + // implementation only so that PSI model doesn't break + return ExtKt.toTypeName(toJavaCode()); + } + + @Override + public boolean equals(Object that) { + if (that instanceof ModelClass) { + TypeName thisTypeName = getTypeName(); + TypeName thatTypeName = ((ModelClass) that).getTypeName(); + return thisTypeName.equals(thatTypeName); + } + return false; + } } diff --git a/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java index a4f7eb9e..8b023f6a 100644 --- a/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java +++ b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java @@ -22,6 +22,9 @@ import android.databinding.tool.reflection.ModelMethod; import android.databinding.tool.reflection.TypeUtil; import android.databinding.tool.util.L; +import com.squareup.javapoet.ClassName; +import com.squareup.javapoet.TypeName; + import java.util.ArrayList; import java.util.List; @@ -385,12 +388,8 @@ class AnnotationClass extends ModelClass { } @Override - public boolean equals(Object obj) { - if (obj instanceof AnnotationClass) { - return getTypeUtils().isSameType(mTypeMirror, ((AnnotationClass) obj).mTypeMirror); - } else { - return false; - } + public TypeName getTypeName() { + return ClassName.get(mTypeMirror); } @Override |