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