Frame-onPop-generators-01.js (600B)
1 // Returning {throw:} from an onPop handler when yielding works. 2 // It closes the generator-iterator. 3 4 load(libdir + "asserts.js"); 5 6 var g = newGlobal({newCompartment: true}); 7 var dbg = new Debugger; 8 var gw = dbg.addDebuggee(g); 9 dbg.onDebuggerStatement = function handleDebugger(frame) { 10 frame.onPop = function (c) { 11 return {throw: "fit"}; 12 }; 13 }; 14 g.eval("function* g() { for (var i = 0; i < 10; i++) { debugger; yield i; } }"); 15 g.eval("var it = g();"); 16 var rv = gw.executeInGlobal("it.next();"); 17 assertEq(rv.throw, "fit"); 18 19 dbg.enabled = false; 20 assertEq(g.it.next().value, undefined);