tor-browser

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

Script-sourceStart-02.js (1087B)


      1 /*
      2 * For function statements, Script.prototype.sourceStart and
      3 * Script.prototype.sourceLength should comprise both the opening '(' and the
      4 * closing '}'.
      5 */
      6 let g = newGlobal({newCompartment: true});
      7 let dbg = new Debugger(g);
      8 
      9 function test(string, ranges) {
     10    var index = 0;
     11    dbg.onNewScript = function (script) {
     12        function traverse(script) {
     13            script.getChildScripts().forEach(function (script) {
     14                assertEq(script.sourceStart, ranges[index][0]);
     15                assertEq(script.sourceLength, ranges[index][1]);
     16                ++index;
     17                traverse(script);
     18            });
     19        }
     20        traverse(script);
     21    };
     22 
     23    g.eval(string);
     24    assertEq(index, ranges.length);
     25 };
     26 
     27 test("function f() {}", [[10, 5]]);
     28 test("function f() { function g() {} }", [[10, 22], [25, 5]]);
     29 test("function f() { function g() { function h() {} } }", [[10, 39], [25, 22], [40, 5]]);
     30 test("function f() { if (true) function g() {} }", [[10, 32], [35, 5]]); 
     31 test("var o = { get p () {} }", [[16, 5]]);
     32 test("var o = { set p (x) {} }", [[16, 6]]);