// The value of frame.environment is the same Environment object at different // times within a single visit to a scope. var g = newGlobal(); var dbg = Debugger(g); g.eval("function h() { debugger; }"); var hits, env; dbg.onDebuggerStatement = function (hframe) { var frame = hframe.older; var e = frame.environment; // frame.environment is at least cached from one moment to the next. assertEq(e, frame.environment); // frame.environment is cached from statement to statement within a call frame. if (env === undefined) env = e; else assertEq(e, env); hits++; }; hits = 0; env = undefined; g.eval("function f() { (function () { var i = 0; h(); var j = 2; h(); })(); }"); g.f(); assertEq(hits, 2); hits = 0; env = undefined; g.eval("function f2() { { let i = 0; h(); let j = 2; h(); } }"); g.f2(); assertEq(hits, 2); hits = 0; env = undefined; g.eval("function f3() { { let i; for (i = 0; i < 2; i++) h(); } }"); g.f3(); assertEq(hits, 2);