Environment-01.js (767B)
1 // A live Environment can observe the new variables introduced by ES5 non-strict direct eval. 2 3 var g = newGlobal({newCompartment: true}); 4 g.eval("var x = 'global'; function f(s) { h(); eval(s); h(); }"); 5 g.eval("function h() { debugger; }"); 6 var dbg = Debugger(g); 7 var env = undefined; 8 var hits = 0; 9 dbg.onDebuggerStatement = function (hframe) { 10 if (env === undefined) { 11 // First debugger statement. 12 env = hframe.older.environment; 13 assertEq(env.find("x") !== env, true); 14 assertEq(env.names().indexOf("x"), -1); 15 } else { 16 // Second debugger statement, post-eval. 17 assertEq(env.find("x"), env); 18 assertEq(env.names().indexOf("x") >= 0, true); 19 } 20 hits++; 21 }; 22 g.f("var x = 'local';"); 23 assertEq(hits, 2);