tor-browser

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

syntax-errors.js (1030B)


      1 // Check that we correctly throw SyntaxErrors for various syntactic near-misses.
      2 
      3 load(libdir + "asserts.js");
      4 
      5 var mistakes = [
      6    "((a)) => expr",
      7    "a + b => a",
      8    "'' + a => a",
      9    "...x",
     10    "[x] => x",
     11    "([x] => x)",
     12    "{p: p} => p",
     13    "({p: p} => p)",
     14    "{p} => p",
     15    "(...x => expr)",
     16    "1 || a => a",
     17    "'use strict' => {}",
     18    "package => {'use strict';}",    // tricky: FutureReservedWord in strict mode code only
     19    "'use strict'; arguments => 0",  // names banned in strict mode code
     20    "'use strict'; eval => 0",
     21    "a => {'use strict'; with (a) return x; }",
     22    "a => yield a",
     23    "a => { yield a; }",
     24    "a => { { let x; yield a; } }",
     25    "(a = yield 0) => a",
     26    "for (;;) a => { break; };",
     27    "for (;;) a => { continue; };",
     28    "...rest) =>",
     29    "2 + ...rest) =>"
     30 ];
     31 
     32 for (var s of mistakes)
     33    assertThrowsInstanceOf(function () { Function(s); }, SyntaxError);
     34 
     35 // Check that the tricky case is not an error in non-strict-mode code.
     36 var f = package => 0;
     37 assertEq(f(1), 0);