diff options
author | David Herman <davidherman@google.com> | 2018-12-06 15:35:51 -0800 |
---|---|---|
committer | David Herman <davidherman@google.com> | 2019-01-08 22:42:06 +0000 |
commit | 8b1320cf5ebd8973ccbdb08165a427089ac07da5 (patch) | |
tree | cee12d80cc041552cfb85b45e3608556b8c24fcd /compiler/src/main/java/android/databinding | |
parent | 0faac69771294e38126e82eb7c38bd9146dd1820 (diff) | |
download | data-binding-8b1320cf5ebd8973ccbdb08165a427089ac07da5.tar.gz |
Update data binding errors for readability
Also, update how databinding errors are encoded, using
JSON instead of our custom format. This both reduces
boilerplate parsing code, and also helps as error
messages now contain newlines in them, which was causing
issues with the previous logic.
Change-Id: Idcf6c984187121e7759b0c1b86a8024edb7f6679
Fixes: 120626727
Fixes: 62685775
Bug: 119440634
Test: Mostly covered by existing tests; some tests
updated to use ErrorMessage constants; SafeUnboxingTest
removed as the warning is no longer shown
Diffstat (limited to 'compiler/src/main/java/android/databinding')
6 files changed, 16 insertions, 15 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/Binding.java b/compiler/src/main/java/android/databinding/tool/Binding.java index cfe1b1e9..7fc532a8 100644 --- a/compiler/src/main/java/android/databinding/tool/Binding.java +++ b/compiler/src/main/java/android/databinding/tool/Binding.java @@ -75,8 +75,8 @@ public class Binding implements LocationScopeProvider { } LambdaExpr lambdaExpr = (LambdaExpr) mExpr; final ModelClass listener = getListenerParameter(mTarget, mName, mExpr.getModel()); - Preconditions.checkNotNull(listener, ErrorMessages.CANNOT_FIND_SETTER_CALL, mName, - "lambda", getTarget().getInterfaceType()); + Preconditions.checkNotNull(listener, ErrorMessages.CANNOT_FIND_SETTER_CALL, + getTarget().getInterfaceType(), mName, "lambda"); //noinspection ConstantConditions List<ModelMethod> abstractMethods = listener.getAbstractMethods(); int numberOfAbstractMethods = abstractMethods.size(); @@ -107,8 +107,8 @@ public class Binding implements LocationScopeProvider { Scope.enter(this); resolveSetterCall(); if (mSetterCall == null) { - L.e(ErrorMessages.CANNOT_FIND_SETTER_CALL, mName, mExpr.getResolvedType(), - getTarget().getInterfaceType()); + L.e(ErrorMessages.CANNOT_FIND_SETTER_CALL, getTarget().getInterfaceType(), + mName, mExpr.getResolvedType()); } } finally { Scope.exit(); @@ -251,7 +251,6 @@ public class Binding implements LocationScopeProvider { } if (!setterParam.isNullable() && resolvedType.isNullable() && mExpr.getResolvedType().unbox() != mExpr.getResolvedType()) { - L.w(ErrorMessages.BOXED_VALUE_CASTING, mExpr, mName, mExpr); mExpr = exprModel.safeUnbox(mExpr); mExpr.markAsBindingExpression(); } diff --git a/compiler/src/main/java/android/databinding/tool/InverseBinding.java b/compiler/src/main/java/android/databinding/tool/InverseBinding.java index 86564886..b9fba12e 100644 --- a/compiler/src/main/java/android/databinding/tool/InverseBinding.java +++ b/compiler/src/main/java/android/databinding/tool/InverseBinding.java @@ -110,9 +110,8 @@ public class InverseBinding implements LocationScopeProvider { mGetterCall = setterStore.getGetterCall(mName, viewType, resolvedType, expr.getModel().getImports()); if (mGetterCall == null) { - L.e(ErrorMessages.CANNOT_FIND_GETTER_CALL, mName, - expr == null ? "Unknown" : mExpr.getResolvedType(), - mTarget.getResolvedType()); + L.e(ErrorMessages.CANNOT_FIND_GETTER_CALL, mTarget.getResolvedType(), mName, + expr == null ? "Unknown" : mExpr.getResolvedType()); } } finally { Scope.exit(); diff --git a/compiler/src/main/java/android/databinding/tool/expr/CallbackArgExpr.java b/compiler/src/main/java/android/databinding/tool/expr/CallbackArgExpr.java index 8e43b12c..79264a7b 100644 --- a/compiler/src/main/java/android/databinding/tool/expr/CallbackArgExpr.java +++ b/compiler/src/main/java/android/databinding/tool/expr/CallbackArgExpr.java @@ -57,8 +57,7 @@ public class CallbackArgExpr extends IdentifierExpr { @Override protected ModelClass resolveType(ModelAnalyzer modelAnalyzer) { - Preconditions - .checkNotNull(mClassFromCallback, ErrorMessages.UNDEFINED_CALLBACK_ARGUMENT, mName); + Preconditions.checkNotNull(mClassFromCallback, ErrorMessages.UNDEFINED_VARIABLE, mName); return mClassFromCallback; } diff --git a/compiler/src/main/java/android/databinding/tool/expr/CallbackExprModel.java b/compiler/src/main/java/android/databinding/tool/expr/CallbackExprModel.java index 9c3495a6..9cf9f751 100644 --- a/compiler/src/main/java/android/databinding/tool/expr/CallbackExprModel.java +++ b/compiler/src/main/java/android/databinding/tool/expr/CallbackExprModel.java @@ -123,8 +123,8 @@ public class CallbackExprModel extends ExprModel { Scope.enter(added); IdentifierExpr identifierWithSameName = mOriginal.findIdentifier(name); if (identifierWithSameName != null) { - L.w(ErrorMessages.CALLBACK_VARIABLE_NAME_CLASH, name, name, - identifierWithSameName.getUserDefinedType()); + L.w(ErrorMessages.CALLBACK_VARIABLE_NAME_CLASH, name, + identifierWithSameName.getUserDefinedType(), name); } } finally { Scope.exit(); diff --git a/compiler/src/main/java/android/databinding/tool/expr/Expr.java b/compiler/src/main/java/android/databinding/tool/expr/Expr.java index d1798443..16d1692e 100644 --- a/compiler/src/main/java/android/databinding/tool/expr/Expr.java +++ b/compiler/src/main/java/android/databinding/tool/expr/Expr.java @@ -221,7 +221,6 @@ abstract public class Expr implements VersionProvider, LocationScopeProvider { return; } mUnboxedAChild = true; - L.w(ErrorMessages.BOXED_VALUE_CASTING, child, this, child); int index = getChildren().indexOf(child); child.getParents().remove(this); getChildren().set(index, model.safeUnbox(child)); @@ -900,7 +899,12 @@ abstract public class Expr implements VersionProvider, LocationScopeProvider { && shouldUnwrap(type, expr.getResolvedType())) { unwrapped = mModel.methodCall(expr, simpleGetterName, Collections.EMPTY_LIST); if (unwrapped == this) { - L.w(ErrorMessages.OBSERVABLE_FIELD_GET, this); + if (type.isObservableField()) { + L.w(ErrorMessages.OBSERVABLE_FIELD_GET, this); + } + else if (type.isLiveData()) { + L.w(ErrorMessages.LIVEDATA_FIELD_GETVALUE, this); + } return; // This was already unwrapped! } unwrapped.setUnwrapObservableFields(false); diff --git a/compiler/src/main/java/android/databinding/tool/expr/ExprModel.java b/compiler/src/main/java/android/databinding/tool/expr/ExprModel.java index 6a946c69..e8378cba 100644 --- a/compiler/src/main/java/android/databinding/tool/expr/ExprModel.java +++ b/compiler/src/main/java/android/databinding/tool/expr/ExprModel.java @@ -249,7 +249,7 @@ public class ExprModel { */ public Expr globalMethodCall(String methodName, List<Expr> args) { Preconditions.check(SAFE_UNBOX_METHOD_NAME.equals(methodName), - ErrorMessages.CANNOT_FIND_METHOD_ON_OWNER, methodName, "ViewDataBinding"); + ErrorMessages.CANNOT_FIND_METHOD_ON_OWNER, "ViewDataBinding", methodName); Preconditions.check(args.size() == 1, ErrorMessages.ARGUMENT_COUNT_MISMATCH, 1, args.size()); MethodCallExpr expr = methodCall(viewDataBinding(), SAFE_UNBOX_METHOD_NAME, args); |