// Frame.this and evalInFrame in the global scope. var g = newGlobal({newCompartment: true}); g.eval("x = 4; this['.this'] = 222;"); var dbg = new Debugger(g); var res; dbg.onDebuggerStatement = function (frame) { res = frame.eval("this.x").return; res += frame.this.unsafeDereference().x; }; g.eval("debugger;"); assertEq(res, 8); // And inside eval. g.eval("x = 3; eval('debugger')"); assertEq(res, 6); g.eval("x = 2; eval('eval(\\'debugger\\')')"); assertEq(res, 4); // And inside arrow functions. g.eval("x = 1; (() => { debugger; })()"); assertEq(res, 2); g.eval("x = 5; (() => { eval('debugger'); })()"); assertEq(res, 10);