diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java | 7 |
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)"); } } |