diff options
author | 2016-01-21 17:00:47 +0000 | |
---|---|---|
committer | 2016-01-21 19:10:12 +0000 | |
commit | 612d22190c9bdfd8288f7685dc8d89da07443d51 (patch) | |
tree | 14305ebff67cba7d93e018056be71b3435c9ffce /src/main/java/com/google/devtools/build/lib/syntax | |
parent | 791265874faf26f63093dbcd4476fda9f10e1f32 (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.java | 24 |
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) { |