diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java | 7 |
1 files changed, 5 insertions, 2 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 08ea8ee3c1..af33276aa7 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 @@ -205,8 +205,8 @@ public class BuiltinFunction extends BaseFunction { Preconditions.checkState(!isConfigured()); // must not be configured yet enforcedArgumentTypes = new ArrayList<>(); this.extraArgs = SkylarkSignatureProcessor.getExtraArgs(annotation); - super.configure(annotation); this.returnType = annotation.returnType(); + super.configure(annotation); } // finds the method and makes it accessible (which is needed to find it, and later to use it) @@ -273,7 +273,10 @@ public class BuiltinFunction extends BaseFunction { if (type == HackHackEitherList.class) { type = Object.class; } - Preconditions.checkArgument(type == invokeMethod.getReturnType()); + Class<?> methodReturnType = invokeMethod.getReturnType(); + Preconditions.checkArgument(type == methodReturnType, + "signature for function %s says it returns %s but its invoke method returns %s", + getName(), returnType, methodReturnType); } } |