aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar brandjon <brandjon@google.com>2017-10-24 22:25:59 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-10-25 16:46:10 +0200
commit226eed0a6b2baf31816c8e1fa5a958a748a94b2b (patch)
tree7b813e365408ff48a8d89c5088e254a623bc4a3d
parentd73bcf81d367ee998b64661bbb63b2419f3b04d1 (diff)
Clarify sanity check error message
RELNOTES: None PiperOrigin-RevId: 173302354
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java7
2 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index 8dfe097abf..c8377d69fc 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -186,7 +186,7 @@ public final class EvalUtils {
return parent;
}
Preconditions.checkArgument(SkylarkValue.class.isAssignableFrom(c),
- "%s is not allowed as a Skylark value", c);
+ "%s is not allowed as a Skylark value (getSkylarkType() failed)", c);
return c;
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
index 6d8c1a8667..b47521d31e 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
@@ -602,9 +602,14 @@ public abstract class SkylarkType implements Serializable {
* Throws EvalException if the type of the object is not allowed to be present in Skylark.
*/
static void checkTypeAllowedInSkylark(Object object, Location loc) throws EvalException {
+ // TODO(bazel-team): Unify this check with the logic in EvalUtils.getSkylarkType(). Might
+ // break some providers whose contents don't implement SkylarkValue, aren't wrapped in
+ // SkylarkList, etc.
if (!isTypeAllowedInSkylark(object)) {
throw new EvalException(
- loc, "internal error: type '" + object.getClass().getSimpleName() + "' is not allowed");
+ loc,
+ "internal error: type '" + object.getClass().getSimpleName() + "' is not allowed as a "
+ + "Skylark value (checkTypeAllowedInSkylark() failed)");
}
}