michael@0: // -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: // Any copyright is dedicated to the Public Domain. michael@0: // http://creativecommons.org/licenses/publicdomain/ michael@0: michael@0: var x = 42; michael@0: function a() { michael@0: var x; michael@0: function b() { michael@0: x = 43; michael@0: // When jsparse.cpp's CompExprTransplanter transplants the michael@0: // comprehension expression 'x' into the scope of the 'for' loop, michael@0: // it must not bring the placeholder definition node for the michael@0: // assignment to x above along with it. If it does, x won't appear michael@0: // in b's lexdeps, we'll never find out that the assignment refers michael@0: // to a's x, and we'll generate an assignment to the global x. michael@0: (x for (x in [])); michael@0: } michael@0: b(); michael@0: } michael@0: a(); michael@0: assertEq(x, 42); michael@0: michael@0: reportCompare(true, true);