Frame-script-06.js (957B)
1 // Frame.prototype.script for async generator frames. 2 3 load(libdir + "asserts.js"); 4 5 var g = newGlobal({ newCompartment: true }); 6 var dbg = new Debugger(g); 7 g.eval(` 8 async function* f() { 9 await Promise.resolve(); 10 } 11 `); 12 13 let frame; 14 let script; 15 dbg.onEnterFrame = function(f) { 16 frame = f; 17 script = frame.script; 18 }; 19 20 const it = g.f(); 21 22 assertEq(frame instanceof Debugger.Frame, true); 23 assertEq(script instanceof Debugger.Script, true); 24 assertEq(frame.script, script); 25 26 let lastFrame = frame; 27 let lastScript = script; 28 frame = null; 29 script = null; 30 31 let promise = it.next(); 32 33 assertEq(frame, lastFrame); 34 assertEq(script, lastScript); 35 assertEq(frame.script, script); 36 37 lastFrame = frame; 38 lastScript = script; 39 frame = null; 40 script = null; 41 42 promise.then(() => { 43 assertEq(frame, lastFrame); 44 assertEq(script, lastScript); 45 46 // The frame has finished evaluating, so the script is no longer accessible. 47 assertThrowsInstanceOf(() => frame.script, Error); 48 });