aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Jon Brandvein <brandjon@google.com>2016-08-11 18:53:26 +0000
committerGravatar Yue Gan <yueg@google.com>2016-08-12 08:52:09 +0000
commit83e3acb88d9973011a1101f747fa4664e2515eca (patch)
tree02444526b7e68f4b3de3416e81f30a8b94928886 /src/main/java/com/google/devtools/build/lib
parent7c80d88eb8e329a99da4cb433343725482bd7c15 (diff)
Roll forward fix of global var shadow detection
RELNOTES[INC]: Skylark: It is an error to shadow a global variable with a local variable after the global has already been accessed in the function. -- MOS_MIGRATED_REVID=130014492
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Environment.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
index 2aab8811b2..ec504a06ec 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
@@ -222,12 +222,14 @@ public final class Environment implements Freezable {
FuncallExpression caller,
Frame lexicalFrame,
Frame globalFrame,
+ Set<String> knownGlobalVariables,
boolean isSkylark) {
this.continuation = continuation;
this.function = function;
this.caller = caller;
this.lexicalFrame = lexicalFrame;
this.globalFrame = globalFrame;
+ this.knownGlobalVariables = knownGlobalVariables;
this.isSkylark = isSkylark;
}
}
@@ -369,7 +371,8 @@ public final class Environment implements Freezable {
*/
void enterScope(BaseFunction function, FuncallExpression caller, Frame globals) {
continuation =
- new Continuation(continuation, function, caller, lexicalFrame, globalFrame, isSkylark);
+ new Continuation(continuation, function, caller, lexicalFrame, globalFrame,
+ knownGlobalVariables, isSkylark);
lexicalFrame = new Frame(mutability(), null);
globalFrame = globals;
knownGlobalVariables = new HashSet<>();