aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
diff options
context:
space:
mode:
authorGravatar Han-Wen Nienhuys <hanwen@google.com>2016-01-21 17:00:47 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-21 19:10:12 +0000
commit612d22190c9bdfd8288f7685dc8d89da07443d51 (patch)
tree14305ebff67cba7d93e018056be71b3435c9ffce /src/main/java/com/google/devtools/build/lib/syntax
parent791265874faf26f63093dbcd4476fda9f10e1f32 (diff)
Raise error if we find an unknown type in native.rule().
Handle more types: * Boolean * TriState * SkylarkValue (eg. FileSetEntry) * skip Licenses, Distribs. -- MOS_MIGRATED_REVID=112690550
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
index 6cbbf2363a..74a9f4c2bc 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
@@ -198,18 +198,32 @@ public class BuiltinFunction extends BaseFunction {
}
}
+ private static String stacktraceToString(StackTraceElement[] elts) {
+ StringBuilder b = new StringBuilder();
+ for (StackTraceElement e : elts) {
+ b.append(e.toString());
+ b.append("\n");
+ }
+ return b.toString();
+ }
+
private IllegalStateException badCallException(Location loc, Throwable e, Object... args) {
// If this happens, it's a bug in our code.
- return new IllegalStateException(String.format("%s%s (%s)\n"
- + "while calling %s with args %s\nJava parameter types: %s\nSkylark type checks: %s",
+ return new IllegalStateException(
+ String.format(
+ "%s%s (%s)\n"
+ + "while calling %s with args %s\n"
+ + "Java parameter types: %s\nSkylark type checks: %s",
(loc == null) ? "" : loc + ": ",
- e.getClass().getName(), e.getMessage(), this,
Arrays.asList(args),
+ e.getClass().getName(),
+ stacktraceToString(e.getStackTrace()),
+ this,
Arrays.asList(invokeMethod.getParameterTypes()),
- signature.getTypes()), e);
+ signature.getTypes()),
+ e);
}
-
/** Configure the reflection mechanism */
@Override
public void configure(SkylarkSignature annotation) {