Environment-setVariable-WouldRun.js (728B)
1 // setVariable triggering a setter throws WouldRunDebuggee. 2 3 load(libdir + "asserts.js"); 4 5 function test(code) { 6 var g = newGlobal({newCompartment: true}); 7 g.eval("function d() { debugger; }"); 8 var dbg = Debugger(g); 9 var hits = 0; 10 dbg.onDebuggerStatement = function (frame) { 11 var env = frame.older.environment.find("x"); 12 assertThrowsInstanceOf( 13 () => env.setVariable("x", 0), 14 Debugger.DebuggeeWouldRun); 15 hits++; 16 }; 17 g.eval(code); 18 assertEq(hits, 1); 19 } 20 21 test("Object.defineProperty(this, 'x', {set: function (v) {}}); d();"); 22 test("Object.defineProperty(Object.prototype, 'x', {set: function (v) {}}); d();"); 23 test("with ({set x(v) {}}) eval(d());");