Frame-onPop-async-generators-01.js (1249B)
1 // |jit-test| error:all-jobs-completed-successfully 2 3 load(libdir + "asserts.js"); 4 load(libdir + 'match.js'); 5 load(libdir + 'match-debugger.js'); 6 const { Pattern } = Match; 7 const { OBJECT_WITH_EXACTLY: EXACT } = Pattern; 8 9 let g = newGlobal({newCompartment: true}); 10 let dbg = Debugger(g); 11 const log = []; 12 g.capture = function () { 13 dbg.getNewestFrame().onPop = completion => { 14 log.push(completion); 15 }; 16 }; 17 18 g.eval(` 19 async function* asyncgen() { 20 capture(); 21 await Promise.resolve(1); 22 yield 2; 23 await Promise.resolve(3); 24 yield 4; 25 return "ok"; 26 } 27 `); 28 29 async function collect() { 30 let items = []; 31 for await (let item of g.asyncgen()) { 32 items.push(item); 33 } 34 return items; 35 } 36 37 collect().then(value => { 38 assertDeepEq(value, [2, 4]); 39 40 Pattern([ 41 EXACT({ return: new DebuggerObjectPattern("Promise"), await: true }), 42 EXACT({ return: 2, await: true }), 43 EXACT({ return: 2, yield: true }), 44 EXACT({ return: new DebuggerObjectPattern("Promise"), await: true }), 45 EXACT({ return: 4, await: true }), 46 EXACT({ return: 4, yield: true }), 47 EXACT({ return: "ok", await: true }), 48 EXACT({ return: "ok" }), 49 ]).assert(log); 50 51 throw "all-jobs-completed-successfully"; 52 });