tor-browser

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

lineNumber.js (1932B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/licenses/publicdomain/ */
      3 
      4 var BUGNUMBER = 1253847;
      5 var summary = 'Line numbers should be updated correctly when a template literal contains CRLF sequences.';
      6 
      7 print(BUGNUMBER + ": " + summary);
      8 
      9 // lineNumber after template literal.
     10 var base, x, lineno;
     11 eval([
     12  "base = new Error().lineNumber;",
     13  "x = `",
     14  "`;",
     15  "lineno = new Error().lineNumber;",
     16 ].join("\r\n"));
     17 assertEq(lineno, base + 3);
     18 
     19 eval([
     20  "base = new Error().lineNumber;",
     21  "x = `",
     22  "",
     23  "`;",
     24  "lineno = new Error().lineNumber;",
     25 ].join("\r\n"));
     26 assertEq(lineno, base + 4);
     27 
     28 eval([
     29  "base = new Error().lineNumber;",
     30  "x = `a",
     31  "b`;",
     32  "lineno = new Error().lineNumber;",
     33 ].join("\r\n"));
     34 assertEq(lineno, base + 3);
     35 
     36 // lineNumber inside template literal
     37 eval([
     38  "base = new Error().lineNumber;",
     39  "x = `${new Error().lineNumber}",
     40  "${new Error().lineNumber}",
     41  "${new Error().lineNumber}`;",
     42  "lineno = new Error().lineNumber;",
     43 ].join("\r\n"));
     44 assertEq(lineno, base + 4);
     45 assertEq(x, (base + 1) + '\n' + (base + 2) + '\n' + (base + 3));
     46 
     47 eval([
     48  "var base = new Error().lineNumber;",
     49  "var x = `",
     50  "${new Error().lineNumber}",
     51  "${new Error().lineNumber}",
     52  "${new Error().lineNumber}",
     53  "`;",
     54  "var lineno = new Error().lineNumber;",
     55 ].join("\r\n"));
     56 assertEq(lineno, base + 6);
     57 assertEq(x, '\n' + (base + 2) + '\n' + (base + 3) + '\n' + (base + 4) + '\n');
     58 
     59 // When CR, LF, and CRLF are mixed.
     60 eval([
     61  "var base = new Error().lineNumber;", "\n",
     62  "var x = `${new Error().lineNumber}", "\n",
     63  "${new Error().lineNumber}", "\r\n",
     64  "${new Error().lineNumber}", "\r",
     65  "${new Error().lineNumber}`;", "\n",
     66  "var lineno = new Error().lineNumber;",
     67 ].join(""));
     68 assertEq(lineno, base + 5);
     69 assertEq(x, (base + 1) + '\n' + (base + 2) + '\n' + (base + 3) + '\n' + (base + 4));
     70 
     71 if (typeof reportCompare === "function")
     72  reportCompare(true, true);