diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java index 54fdab2989..b4fc95f5aa 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java @@ -65,15 +65,15 @@ public class UserDefinedFunction extends BaseFunction { Profiler.instance().startTask(ProfilerTask.SKYLARK_USER_FN, getName()); try { - ImmutableList<String> argumentNames = signature.getSignature().getNames(); - env.enterScope( - this, - LexicalFrame.createForUserDefinedFunctionCall( - argumentNames, - arguments, - env), - ast, - definitionGlobals); + env.enterScope(this, LexicalFrame.create(env.mutability()), ast, definitionGlobals); + ImmutableList<String> names = signature.getSignature().getNames(); + + // Registering the functions's arguments as variables in the local Environment + int i = 0; + for (String name : names) { + env.update(name, arguments[i++]); + } + Eval eval = new Eval(env); try { for (Statement stmt : statements) { |