aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
diff options
context:
space:
mode:
authorGravatar Francois-Rene Rideau <tunes@google.com>2015-04-22 06:47:31 +0000
committerGravatar Laurent Le Brun <laurentlb@google.com>2015-04-22 12:42:37 +0000
commit537a90b5b90856788412c962de61ece14e83274b (patch)
tree08b489df7f200b6fa59fee0adc857245f78f88e2 /src/main/java/com/google/devtools/build/lib/syntax
parent443aaae842aaf5009c2972277a1089c504873877 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java4
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)) {