tor-browser

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

Frame-onPop-generators-05.js (835B)


      1 // In .onPop for the "initial yield" of a generator, while the generator frame
      2 // is on the stack, the generator object's .next() method throws.
      3 
      4 let g = newGlobal({newCompartment: true});
      5 g.eval(`
      6    function* f() {
      7        return "ok";
      8    }
      9 `);
     10 
     11 let hits = 0;
     12 let dbg = new Debugger;
     13 let gw = dbg.addDebuggee(g);
     14 dbg.onEnterFrame = frame => {
     15    dbg.onEnterFrame = undefined;  // Trigger only once.
     16    frame.onPop = completion => {
     17        // Initial yield.
     18        let genObj = completion.return;
     19        assertEq(genObj.class, "Generator");
     20        let result = frame.evalWithBindings("genObj.next()", {genObj});
     21        assertEq(result.throw.class, "TypeError");
     22        assertEq(result.throw.getProperty("message").return,
     23                 "already executing generator");
     24        hits++;
     25    };
     26 };
     27 
     28 g.f();
     29 assertEq(hits, 1);