aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java18
1 files changed, 11 insertions, 7 deletions
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 94b1917ab6..6140acb0b0 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
@@ -22,21 +22,25 @@ public class SkylarkCallbackFunction {
private final BaseFunction callback;
private final FuncallExpression ast;
- private final SkylarkEnvironment funcallEnv;
+ private final Environment funcallEnv;
- public SkylarkCallbackFunction(BaseFunction callback, FuncallExpression ast,
- SkylarkEnvironment funcallEnv) {
+ public SkylarkCallbackFunction(
+ BaseFunction callback, FuncallExpression ast, Environment funcallEnv) {
this.callback = callback;
this.ast = ast;
this.funcallEnv = funcallEnv;
}
public Object call(ClassObject ctx, Object... arguments) throws EvalException {
- try {
+ try (Mutability mutability = Mutability.create("callback %s", callback)) {
+ Environment env = Environment.builder(mutability)
+ .setSkylark()
+ .setEventHandler(funcallEnv.getEventHandler())
+ .setGlobals(funcallEnv.getGlobals())
+ .build();
return callback.call(
- ImmutableList.<Object>builder().add(ctx).add(arguments).build(), null, ast, funcallEnv);
- } catch (InterruptedException | ClassCastException
- | IllegalArgumentException e) {
+ ImmutableList.<Object>builder().add(ctx).add(arguments).build(), null, ast, env);
+ } catch (InterruptedException | ClassCastException | IllegalArgumentException e) {
throw new EvalException(ast.getLocation(), e.getMessage());
}
}