tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });