// evalWithBindings basics var g = newGlobal(); var dbg = new Debugger(g); var hits = 0; dbg.onDebuggerStatement = function (frame) { assertEq(frame.evalWithBindings("x", {x: 2}).return, 2); assertEq(frame.evalWithBindings("x + y", {x: 2}).return, 5); hits++; }; // in global code g.y = 3; g.eval("debugger;"); // in function code g.y = "fail"; g.eval("function f(y) { debugger; }"); g.f(3); // in direct eval code g.eval("function f() { var y = 3; eval('debugger;'); }"); g.f(); // in strict eval code with var g.eval("function f() { 'use strict'; eval('var y = 3; debugger;'); }"); g.f(); // in a with block g.eval("with ({y: 3}) { debugger; }"); // shadowing g.eval("{ let x = 50, y = 3; debugger; }"); assertEq(hits, 6);