| // Returning and throwing objects. |
| |
| load(libdir + "asserts.js"); |
| |
| var g = newGlobal(); |
| g.debuggeeGlobal = this; |
| g.eval("(" + function () { |
| var how, what; |
| var dbg = new Debugger(debuggeeGlobal); |
| dbg.onDebuggerStatement = function (frame) { |
| if (frame.callee.name === "configure") { |
| how = frame.arguments[0]; |
| what = frame.arguments[1]; |
| } else { |
| var resume = {}; |
| resume[how] = what; |
| return resume; |
| } |
| }; |
| } + ")();"); |
| |
| function configure(how, what) { debugger; } |
| function fire() { debugger; } |
| |
| var d = new Date; |
| configure('return', d); |
| assertEq(fire(), d); |
| configure('return', Math); |
| assertEq(fire(), Math); |
| |
| var x = new Error('oh no what are you doing'); |
| configure('throw', x); |
| assertThrowsValue(fire, x); |
| configure('throw', parseInt); |
| assertThrowsValue(fire, parseInt); |