Frame-this-16.js (781B)
1 // Test that Debugger.Frame.prototype.this works on a suspended async 2 // generator function. 3 4 load(libdir + "asserts.js"); 5 6 const g = newGlobal({ newCompartment: true }); 7 const dbg = new Debugger(); 8 const gDO = dbg.addDebuggee(g); 9 10 g.eval(` 11 var context = {}; 12 var f = async function*() { 13 await Promise.resolve(); 14 return this; 15 }.bind(context); 16 `); 17 18 let frame; 19 dbg.onEnterFrame = f => { 20 frame = f; 21 assertEq(frame.this, gDO.makeDebuggeeValue(g.context)); 22 dbg.onEnterFrame = undefined; 23 }; 24 25 (async () => { 26 const it = g.f(); 27 28 assertEq(!!frame, true); 29 assertEq(frame.this, gDO.makeDebuggeeValue(g.context)); 30 31 const promise = it.next(); 32 33 assertEq(frame.this, gDO.makeDebuggeeValue(g.context)); 34 35 await promise; 36 37 assertThrowsInstanceOf(() => frame.this, Error); 38 })();