tor-browser

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

Frame-onStep-generators-04.js (966B)


      1 // Stepping works across `yield` in generators.
      2 
      3 // Set up debuggee.
      4 var g = newGlobal({newCompartment: true});
      5 g.log = "";
      6 g.eval(`
      7 function* range(stop) {               // line 2
      8    for (let i = 0; i < stop; i++) {  // 3
      9        yield i;                      // 4
     10        log += " ";                   // 5
     11    }                                 // 6
     12    log += "^";                       // 7
     13 }                                     // 8
     14 `);
     15 
     16 // Set up debugger.
     17 let previousLine = -1;
     18 let dbg = new Debugger(g);
     19 dbg.onEnterFrame = frame => {
     20    frame.onStep = function () {
     21        assertEq(this, frame);
     22        let line = frame.script.getOffsetLocation(frame.offset).lineNumber;
     23        if (previousLine != line) {
     24            g.log += line; // We stepped to a new line.
     25            previousLine = line;
     26        }
     27    };
     28    dbg.onEnterFrame = undefined;
     29 };
     30 
     31 // Run.
     32 for (let value of g.range(3)) {
     33    g.log += "*";
     34 }
     35 
     36 assertEq(g.log, "234*5 34*5 34*5 37^8");