| // setVariable triggering a setter doesn't crash or explode. |
| // It should throw WouldRunDebuggee, but that isn't implemented yet. |
| |
| function test(code) { |
| var g = newGlobal(); |
| g.eval("function d() { debugger; }"); |
| var dbg = Debugger(g); |
| var hits = 0; |
| dbg.onDebuggerStatement = function (frame) { |
| var env = frame.environment.find("x"); |
| try { |
| env.setVariable("x", 0); |
| } catch (exc) { |
| } |
| hits++; |
| }; |
| g.eval(code); |
| } |
| |
| test("Object.defineProperty(this, 'x', {set: function (v) {}}); d();"); |
| test("Object.defineProperty(Object.prototype, 'x', {set: function (v) {}}); d();"); |
| test("with ({set x(v) {}}) eval(d());"); |