diff options
author | 2015-04-22 06:47:31 +0000 | |
---|---|---|
committer | 2015-04-22 12:42:37 +0000 | |
commit | 537a90b5b90856788412c962de61ece14e83274b (patch) | |
tree | 08b489df7f200b6fa59fee0adc857245f78f88e2 /src/main/java/com/google/devtools/build/lib/syntax | |
parent | 443aaae842aaf5009c2972277a1089c504873877 (diff) |
Use BuiltinFunction for all builtins
Replace the uses of AbstractFunction, MixedModeFunction,
SkylarkFunction and SimpleSkylarkFunction by BuiltinFunction.
--
MOS_MIGRATED_REVID=91763158
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
3 files changed, 9 insertions, 7 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); } } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java index 2e94be8706..bff06d5348 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java @@ -15,17 +15,16 @@ package com.google.devtools.build.lib.syntax; import com.google.common.collect.ImmutableList; - /** * A helper class for calling Skylark functions from Java. */ public class SkylarkCallbackFunction { - private final UserDefinedFunction callback; + private final Function callback; private final FuncallExpression ast; private final SkylarkEnvironment funcallEnv; - public SkylarkCallbackFunction(UserDefinedFunction callback, FuncallExpression ast, + public SkylarkCallbackFunction(Function callback, FuncallExpression ast, SkylarkEnvironment funcallEnv) { this.callback = callback; this.ast = ast; diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java index b264dd699b..11e35227b7 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java @@ -205,8 +205,8 @@ public class SkylarkEnvironment extends Environment implements Serializable { List<Class<?>> modulesToRemove = new ArrayList<>(); for (Map.Entry<String, Object> entry : env.entrySet()) { Object object = entry.getValue(); - if (object instanceof SkylarkFunction) { - if (((SkylarkFunction) object).isOnlyLoadingPhase()) { + if (object instanceof BaseFunction) { + if (((BaseFunction) object).isOnlyLoadingPhase()) { objectsToRemove.add(entry.getKey()); } } else if (object.getClass().isAnnotationPresent(SkylarkModule.class)) { |