tor-browser

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

unterminated-literal-error-location.js (2627B)


      1 /*
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/licenses/publicdomain/
      4 */
      5 
      6 var BUGNUMBER = 1434429;
      7 var summary =
      8  "Report unterminated string/template literal errors with the line/column " +
      9  "number of the point of non-termination";
     10 
     11 function test(f, quotes, [line, col])
     12 {
     13  var caught = false;
     14  try
     15  {
     16    f();
     17  }
     18  catch (e)
     19  {
     20    caught = true;
     21    assertEq(e.lineNumber, line, "line number");
     22    assertEq(e.columnNumber, col, "column number");
     23    assertEq(e.message.includes(quotes), true,
     24             "message must contain delimiter");
     25  }
     26 
     27  assertEq(caught, true);
     28 }
     29 
     30 test(function() {
     31      //1234
     32  eval("'hi");
     33 }, "''", [1, 4]);
     34 
     35 test(function() {
     36      //1234 5
     37  eval("'hi\\");
     38 }, "''", [1, 5]);
     39 
     40 test(function() {
     41      //1234567
     42  eval("   'hi");
     43 }, "''", [1, 7]);
     44 
     45 test(function() {
     46      //1234567 8
     47  eval("   'hi\\");
     48 }, "''", [1, 8]);
     49 
     50 test(function() {
     51      //12345678 12345678
     52  eval('var x =\n    "hi');
     53 }, '""', [2, 8]);
     54 
     55 test(function() {
     56      //1234567  12345678 9
     57  eval('var x =\n    "hi\\');
     58 }, '""', [2, 9]);
     59 
     60 test(function() {
     61      //                                         1
     62      //1234567  12345678   123456789   12345678901234
     63  eval('var x =\n    "hi\\\n     bye\\\n    no really');
     64 }, '""', [4, 14]);
     65 
     66 test(function() {
     67      //                                         1
     68      //1234567  12345678   123456789   12345678901234 5
     69  eval('var x =\n    "hi\\\n     bye\\\n    no really\\');
     70 }, '""', [4, 15]);
     71 
     72 test(function() {
     73      //1234567  12345678   123456789
     74  eval('var x =\n    "hi\\\n     bye\n');
     75 }, '""', [3, 9]);
     76 
     77 test(function() {
     78      //                              1
     79      //1234567  12345678   123456789 0
     80  eval('var x =\n    "hi\\\n     bye\\');
     81 }, '""', [3, 10]);
     82 
     83 test(function() {
     84      //1234567  12345678
     85  eval('var x =\n      `');
     86 }, '``', [2, 8]);
     87 
     88 test(function() {
     89      //1234567  12345678 9
     90  eval('var x =\n      `\\');
     91 }, '``', [2, 9]);
     92 
     93 test(function() {
     94      //                  1
     95      //1234567  1234567890123456
     96  eval('var x =\n    htmlEscape`');
     97 }, '``', [2, 16]);
     98 
     99 test(function() {
    100      //                  1
    101      //1234567  1234567890123456 7
    102  eval('var x =\n    htmlEscape`\\');
    103 }, '``', [2, 17]);
    104 
    105 test(function() {
    106      //                  1
    107      //1234567  12345678901234  12345
    108  eval('var x =\n    htmlEscape\n   `');
    109 }, '``', [3, 5]);
    110 
    111 test(function() {
    112      //                  1
    113      //1234567  12345678901234  12345 6
    114  eval('var x =\n    htmlEscape\n   `\\');
    115 }, '``', [3, 6]);
    116 
    117 if (typeof reportCompare === "function")
    118  reportCompare(0, 0, "ok");
    119 
    120 print("Tests complete");