tor-browser

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

Frame-onStep-generators-defaults.js (999B)


      1 // onStep works during the evaluation of default parameter values in generators.
      2 //
      3 // (They're evaluated at a weird time in the generator life cycle, before the
      4 // generator object is created.)
      5 
      6 load(libdir + "asserts.js");
      7 
      8 let g = newGlobal({newCompartment: true});
      9 g.eval(`\
     10    function f1() {}        // line 1
     11    function f2() {}        //  2
     12    function f3() {}        //  3
     13                            //  4
     14    function* gen(          //  5
     15        name,               //  6
     16        schema = f1(),      //  7
     17        timeToLive = f2(),  //  8
     18        lucidity = f3()     //  9
     19    ) {                     // 10
     20    }                       // 11
     21 `);
     22 
     23 let dbg = Debugger(g);
     24 let log = [];
     25 dbg.onEnterFrame = frame => {
     26    frame.onStep = () => {
     27        let line = frame.script.getOffsetLocation(frame.offset).lineNumber;
     28        if (log.length == 0 || line != log[log.length - 1]) {
     29            log.push(line);
     30        }
     31    };
     32 };
     33 
     34 g.gen(0);
     35 assertDeepEq(log, [5, 7, 1, 8, 2, 9, 3, 10]);