tor-browser

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

Script-sourceStart-03.js (1071B)


      1 /*
      2 * For arrow functions, Script.prototype.sourceStart and
      3 * Script.prototype.sourceLength should comprise the entire function expression
      4 * (including arguments)
      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 
     25    /*
     26     * In some configurations certain child scripts are listed twice, so we
     27     * cannot rely on index always having the exact same value
     28     */
     29    assertEq(0 < index && index <= ranges.length, true);
     30 };
     31 
     32 test("() => {}", [[0, 8]]);
     33 test("(x, y) => { x * y }", [[0, 19]]);
     34 test("x => x * x", [[0, 10]]);
     35 test("x => x => x * x", [[0, 15], [5, 10], [5, 10]]);