|
1 // -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- |
|
2 // Any copyright is dedicated to the Public Domain. |
|
3 // http://creativecommons.org/licenses/publicdomain/ |
|
4 |
|
5 var x = 42; |
|
6 function a() { |
|
7 var x; |
|
8 function b() { |
|
9 x = 43; |
|
10 // When jsparse.cpp's CompExprTransplanter transplants the |
|
11 // comprehension expression 'x' into the scope of the 'for' loop, |
|
12 // it must not bring the placeholder definition node for the |
|
13 // assignment to x above along with it. If it does, x won't appear |
|
14 // in b's lexdeps, we'll never find out that the assignment refers |
|
15 // to a's x, and we'll generate an assignment to the global x. |
|
16 (x for (x in [])); |
|
17 } |
|
18 b(); |
|
19 } |
|
20 a(); |
|
21 assertEq(x, 42); |
|
22 |
|
23 reportCompare(true, true); |