Frame-onPop-generators-04.js (753B)
1 // Terminating a generator from the onPop callback for its initial yield 2 // leaves the Frame in a sane but inactive state. 3 4 load(libdir + "asserts.js"); 5 6 let g = newGlobal({newCompartment: true}); 7 g.eval("function* f(x) { yield x; }"); 8 let dbg = new Debugger; 9 let gw = dbg.addDebuggee(g); 10 11 let genFrame = null; 12 dbg.onDebuggerStatement = frame => { 13 dbg.onEnterFrame = frame => { 14 if (frame.callee == gw.getOwnPropertyDescriptor("f").value) { 15 genFrame = frame; 16 frame.onPop = completion => null; 17 } 18 }; 19 assertEq(frame.eval("f(0);"), null); 20 }; 21 22 g.eval("debugger;"); 23 24 assertEq(genFrame instanceof Debugger.Frame, true); 25 assertEq(genFrame.onStack, false); 26 assertThrowsInstanceOf(() => genFrame.callee, Error);