aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
diff options
context:
space:
mode:
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.java7
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);
}
}