tor-browser

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

Script-getLineOffsets-02.js (1098B)


      1 // getLineOffsets correctly places the various parts of a ForStatement.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 var dbg = Debugger(g);
      5 dbg.onDebuggerStatement = function (frame) {
      6    function handler(line) {
      7        return {hit: function (frame) { g.log += "" + line; }};
      8    }
      9 
     10    var s = frame.eval("f").return.script;
     11    for (var line = 2; line <= 6; line++) {
     12        var offs = s.getLineOffsets(g.line0 + line);
     13        var h = handler(line);
     14        for (var i = 0; i < offs.length; i++) {
     15            assertEq(s.getOffsetLocation(offs[i]).lineNumber, g.line0 + line);
     16            s.setBreakpoint(offs[i], h);
     17        }
     18    }
     19 };
     20 
     21 g.log = '';
     22 g.eval("var line0 = Error().lineNumber;\n" +
     23       "function f(n) {\n" +        // line0 + 1
     24       "    for (var i = 0;\n" +    // line0 + 2
     25       "         i < n;\n" +        // line0 + 3
     26       "         i++)\n" +          // line0 + 4
     27       "        log += '.';\n" +    // line0 + 5
     28       "    log += '!';\n" +        // line0 + 6
     29       "}\n" +
     30       "debugger;\n");
     31 assertEq(g.log, "");
     32 g.f(3);
     33 assertEq(g.log, "235.435.435.436!");