|
1 // setVariable triggering a setter doesn't crash or explode. |
|
2 // It should throw WouldRunDebuggee, but that isn't implemented yet. |
|
3 |
|
4 function test(code) { |
|
5 var g = newGlobal(); |
|
6 g.eval("function d() { debugger; }"); |
|
7 var dbg = Debugger(g); |
|
8 var hits = 0; |
|
9 dbg.onDebuggerStatement = function (frame) { |
|
10 var env = frame.environment.find("x"); |
|
11 try { |
|
12 env.setVariable("x", 0); |
|
13 } catch (exc) { |
|
14 } |
|
15 hits++; |
|
16 }; |
|
17 g.eval(code); |
|
18 } |
|
19 |
|
20 test("Object.defineProperty(this, 'x', {set: function (v) {}}); d();"); |
|
21 test("Object.defineProperty(Object.prototype, 'x', {set: function (v) {}}); d();"); |
|
22 test("with ({set x(v) {}}) eval(d());"); |