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