1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/Environment-getVariable-12.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,61 @@ 1.4 +var g = newGlobal(); 1.5 +var dbg = new Debugger; 1.6 +var gw = dbg.addDebuggee(g); 1.7 + 1.8 +var hits = 0; 1.9 +dbg.onDebuggerStatement = function (frame) { 1.10 + hits++; 1.11 + assertEq(frame.environment.parent.getVariable('y'), true); 1.12 +}; 1.13 + 1.14 +g.eval("var g;" + 1.15 + "function f(x) {" + 1.16 + " let (y = x) {" + 1.17 + " if (x)" + 1.18 + " g = function() { eval('debugger') };" + 1.19 + " else" + 1.20 + " g();" + 1.21 + " }" + 1.22 + "}" + 1.23 + "f(true);" + 1.24 + "f(false);"); 1.25 +assertEq(hits, 1); 1.26 + 1.27 +var hits = 0; 1.28 +dbg.onDebuggerStatement = function (frame) { 1.29 + hits++; 1.30 + assertEq(frame.environment.parent.getVariable('y'), 1); 1.31 + assertEq(frame.environment.parent.names().indexOf('z'), -1); 1.32 +}; 1.33 + 1.34 +g.eval("var g;" + 1.35 + "let (y = 1) {" + 1.36 + " g = function () { debugger; };" + 1.37 + " let (z = 2) {" + 1.38 + " g();" + 1.39 + " }"+ 1.40 + "}"); 1.41 +assertEq(hits, 1); 1.42 + 1.43 +var hits = 0; 1.44 +dbg.onDebuggerStatement = function (frame) { 1.45 + hits++; 1.46 + var e = frame.older.environment.parent; 1.47 + assertEq(e.getVariable('z'), true); 1.48 + e = e.parent; 1.49 + assertEq(e.getVariable('y'), true); 1.50 +}; 1.51 + 1.52 +g.eval("var g;" + 1.53 + "function h() { debugger };" + 1.54 + "for (var x of [true, false]) {" + 1.55 + " let (y = x) {" + 1.56 + " let (z = x) {" + 1.57 + " if (x)" + 1.58 + " g = function () { print(z); h() };" + 1.59 + " else" + 1.60 + " g();" + 1.61 + " }" + 1.62 + " }" + 1.63 + "}"); 1.64 +assertEq(hits, 1);