Use BuiltinFunction for all builtins
Replace the uses of AbstractFunction, MixedModeFunction,
SkylarkFunction and SimpleSkylarkFunction by BuiltinFunction.
--
MOS_MIGRATED_REVID=91763158
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 08ea8ee..af33276 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 @@
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 @@
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);
}
}