| // Returning {throw:} from an onPop handler when yielding works and |
| // closes the generator-iterator. |
| |
| load(libdir + "iteration.js"); |
| |
| var g = newGlobal(); |
| var dbg = new Debugger; |
| var gw = dbg.addDebuggee(g); |
| dbg.onDebuggerStatement = function handleDebugger(frame) { |
| frame.onPop = function (c) { |
| return {throw: "fit"}; |
| }; |
| }; |
| g.eval("function* g() { for (var i = 0; i < 10; i++) { debugger; yield i; } }"); |
| g.eval("var it = g();"); |
| var rv = gw.executeInGlobal("it.next();"); |
| assertEq(rv.throw, "fit"); |
| |
| dbg.enabled = false; |
| assertIteratorDone(g.it); |