tor-browser

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

Frame-onStep-generators-01.js (849B)


      1 // Stepping into the `.next()` method of a generator works as expected.
      2 
      3 let g = newGlobal({newCompartment: true});
      4 g.eval(`\
      5 function* nums() {      // line 1
      6    yield 1;            //  2
      7    yield 2;            //  3
      8 }                       //  4
      9 function f() {          //  5
     10    let gen = nums();   //  6
     11    gen.next();         //  7
     12    gen.next();         //  8
     13    gen.next();         //  9
     14 }                       // 10
     15 `);
     16 
     17 let log = [];
     18 let previousLine = -1;
     19 let dbg = new Debugger(g);
     20 dbg.onEnterFrame = frame => {
     21    frame.onStep = () => {
     22        let line = frame.script.getOffsetLocation(frame.offset).lineNumber;
     23        if (previousLine != line) { // We stepped to a new line.
     24            log.push(line);
     25            previousLine = line;
     26        }
     27    };
     28 };
     29 
     30 g.f();
     31 assertEq(log.join(" "), "5 6 1 6 7 1 2 7 8 2 3 8 9 3 4 9 10");