summaryrefslogtreecommitdiff
path: root/compiler/src/main/java/android/databinding
diff options
context:
space:
mode:
authorDavid Herman <davidherman@google.com>2018-12-06 15:35:51 -0800
committerDavid Herman <davidherman@google.com>2019-01-08 22:42:06 +0000
commit8b1320cf5ebd8973ccbdb08165a427089ac07da5 (patch)
treecee12d80cc041552cfb85b45e3608556b8c24fcd /compiler/src/main/java/android/databinding
parent0faac69771294e38126e82eb7c38bd9146dd1820 (diff)
downloaddata-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')
-rw-r--r--compiler/src/main/java/android/databinding/tool/Binding.java9
-rw-r--r--compiler/src/main/java/android/databinding/tool/InverseBinding.java5
-rw-r--r--compiler/src/main/java/android/databinding/tool/expr/CallbackArgExpr.java3
-rw-r--r--compiler/src/main/java/android/databinding/tool/expr/CallbackExprModel.java4
-rw-r--r--compiler/src/main/java/android/databinding/tool/expr/Expr.java8
-rw-r--r--compiler/src/main/java/android/databinding/tool/expr/ExprModel.java2
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);