summaryrefslogtreecommitdiff
path: root/compiler/src/main/java/android/databinding
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2017-07-31 12:35:15 -0700
committerGeorge Mount <mount@google.com>2017-07-31 13:09:23 -0700
commit32d6211924b37695fe56d8bad48963c5d055fecc (patch)
tree11128b70c460da7dcd376eccd745b552066edd0c /compiler/src/main/java/android/databinding
parent3f5cdfb2d1dc7bed6e0cc9f470aeb5d2ef6e1450 (diff)
downloaddata-binding-32d6211924b37695fe56d8bad48963c5d055fecc.tar.gz
Make changes so tests start passing.
Fixed gradle version. Removed obsolete test. Removed test for legacy versions. Test: gw runAllTests Taken from: Ia5a37722af011a41efbffe6ae809917a722b93a2 Change-Id: Id313c1118f267071d671f02b7f08d370b9979cc2
Diffstat (limited to 'compiler/src/main/java/android/databinding')
-rw-r--r--compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java42
1 files changed, 20 insertions, 22 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java b/compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java
index b60bc793..da932f9e 100644
--- a/compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java
@@ -210,35 +210,33 @@ public class FieldAccessExpr extends MethodBaseExpr {
ModelClass resolvedType = target.getResolvedType();
L.d("resolving %s. Resolved class type: %s", this, resolvedType);
- mDependencies = new FieldAccessExpr[dependencyArray.length];
- for (int i = 0; i < dependencyArray.length; i++) {
- String dependency = dependencyArray[i];
- FieldAccessExpr expr = getModel().field(getTarget(), dependency);
- mDependencies[i] = expr;
- expr.getResolvedType(); // force it to resolve its dependencies as well
- }
-
- resolveDependencies(mTransitiveDependencies);
- for (FieldAccessExpr expr : mTransitiveDependencies) {
- if (expr.mGetter == null) {
+ boolean isStatic = target instanceof StaticIdentifierExpr;
+ for (String dependency : dependencyArray) {
+ Callable getter = resolvedType.findGetterOrField(dependency, isStatic);
+ if (getter == null) {
L.e("Could not find dependent property '%s' referenced in "
+ "@Bindable annotation on %s.%s",
- expr.getName(),
- expr.mGetter.method.getDeclaringClass().toJavaCode(),
- expr.mGetter.method.getName());
- } else if (!expr.mGetter.canBeInvalidated()
- && !expr.getResolvedType().isObservableField()) {
+ dependency,
+ mGetter.method.getDeclaringClass().toJavaCode(),
+ mGetter.method.getName());
+ } else if (!getter.canBeInvalidated() && !getter.resolvedType.isObservableField()) {
L.e("The dependent property '%s' referenced in @Bindable "
+ "annotation on %s.%s must be annotated with "
+ "@Bindable",
- expr.getName(),
- expr.mGetter.method.getDeclaringClass().toJavaCode(),
- expr.mGetter.method.getName());
- } else {
- // Make sure we listen for changes
- getModel().bindingExpr(expr);
+ dependency,
+ mGetter.method.getDeclaringClass().toJavaCode(),
+ mGetter.method.getName());
}
}
+ mDependencies = new FieldAccessExpr[dependencyArray.length];
+ for (int i = 0; i < dependencyArray.length; i++) {
+ mDependencies[i] = getModel().field(target, dependencyArray[i]);
+ mDependencies[i].getResolvedType(); // force dependency resolution
+ // Make sure we listen for changes
+ getModel().bindingExpr(mDependencies[i]);
+ }
+
+ resolveDependencies(mTransitiveDependencies);
for (FieldAccessExpr expr : mTransitiveDependencies) {
expr.addBindableDependent(this);
}