Bug 1208442 - Simplify parser syntax test. r=Waldo
authorTooru Fujisawa <arai_a@mac.com>
Sun, 20 Sep 2015 12:20:43 +0900
changeset 265273 906415bde4ed5fa7989dcdae30dd32d1509c9056
parent 265272 57ef7c720fda0524ecf4e212add44611fda9f0bc
child 265274 10194aec725587fb0c7336557b909b7052fa891e
push id65891
push userarai_a@mac.com
push dateWed, 30 Sep 2015 16:36:04 +0000
treeherdermozilla-inbound@10194aec7255 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersWaldo
bugs1208442
milestone44.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1208442 - Simplify parser syntax test. r=Waldo
js/src/jit-test/lib/syntax.js
js/src/jit-test/tests/parser/modifier-regexp-vs-div.js
js/src/jit-test/tests/parser/modifier-yield-without-operand-1.js
js/src/jit-test/tests/parser/modifier-yield-without-operand-2.js
js/src/jit-test/tests/parser/syntax-error-illegal-character.js
--- a/js/src/jit-test/lib/syntax.js
+++ b/js/src/jit-test/lib/syntax.js
@@ -1,33 +1,33 @@
 load(libdir + "class.js");
 
-function test_syntax(replacements, check_error, ignore_opts) {
+function test_syntax(postfixes, check_error, ignore_opts) {
   function test_reflect(code, module) {
     var options = undefined;
     if (module) {
       options = {target: "module"};
     }
-    for (var repl of replacements) {
-      var cur_code = code.replace(/@/, repl);
+    for (var postfix of postfixes) {
+      var cur_code = code + postfix;
 
       var caught = false;
       try {
         Reflect.parse(cur_code, options);
       } catch (e) {
         caught = true;
         check_error(e, cur_code, "reflect");
       }
       assertEq(caught, true);
     }
   }
 
   function test_eval(code) {
-    for (var repl of replacements) {
-      var cur_code = code.replace(/@/, repl);
+    for (var postfix of postfixes) {
+      var cur_code = code + postfix;
 
       var caught = false;
       try {
         eval(cur_code);
       } catch (e) {
         caught = true;
         check_error(e, cur_code, "eval");
       }
@@ -66,18 +66,18 @@ function test_syntax(replacements, check
         if (!no_strict) {
           test_eval("(function() { 'use strict'; " + code);
         }
       }
     }
   }
 
   function test_fun_arg(arg) {
-    for (var repl of replacements) {
-      var cur_arg = arg.replace(/@/, repl);
+    for (var postfix of postfixes) {
+      var cur_arg = arg + postfix;
 
       var caught = false;
       try {
         new Function(cur_arg, "");
       } catch (e) {
         caught = true;
         check_error(e, cur_arg, "fun_arg");
       }
@@ -86,1206 +86,1206 @@ function test_syntax(replacements, check
   }
 
   // ==== Statements and declarations ====
 
   // ---- Control flow ----
 
   // Block
 
-  test("{ @");
-  test("{ } @");
+  test("{ ");
+  test("{ } ");
 
-  test("{ 1 @");
-  test("{ 1; @");
-  test("{ 1; } @");
+  test("{ 1 ");
+  test("{ 1; ");
+  test("{ 1; } ");
 
   // break
 
-  test("a: for (;;) { break @");
-  test("a: for (;;) { break; @");
-  test("a: for (;;) { break a @");
-  test("a: for (;;) { break a; @");
+  test("a: for (;;) { break ");
+  test("a: for (;;) { break; ");
+  test("a: for (;;) { break a ");
+  test("a: for (;;) { break a; ");
 
-  test("a: for (;;) { break\n@");
+  test("a: for (;;) { break\n");
 
   // continue
 
-  test("a: for (;;) { continue @");
-  test("a: for (;;) { continue; @");
-  test("a: for (;;) { continue a @");
-  test("a: for (;;) { continue a; @");
+  test("a: for (;;) { continue ");
+  test("a: for (;;) { continue; ");
+  test("a: for (;;) { continue a ");
+  test("a: for (;;) { continue a; ");
 
-  test("a: for (;;) { continue\n@");
+  test("a: for (;;) { continue\n");
 
   // Empty
 
-  test("@");
-  test("; @");
+  test("");
+  test("; ");
 
   // if...else
 
-  test("if @");
-  test("if (@");
-  test("if (x @");
-  test("if (x) @");
-  test("if (x) { @");
-  test("if (x) {} @");
-  test("if (x) {} else @");
-  test("if (x) {} else { @");
-  test("if (x) {} else {} @");
-  test("if (x) x @");
-  test("if (x) x; @");
-  test("if (x) x; else @");
-  test("if (x) x; else y @");
-  test("if (x) x; else y; @");
+  test("if ");
+  test("if (");
+  test("if (x ");
+  test("if (x) ");
+  test("if (x) { ");
+  test("if (x) {} ");
+  test("if (x) {} else ");
+  test("if (x) {} else { ");
+  test("if (x) {} else {} ");
+  test("if (x) x ");
+  test("if (x) x; ");
+  test("if (x) x; else ");
+  test("if (x) x; else y ");
+  test("if (x) x; else y; ");
 
   // switch
 
-  test("switch @");
-  test("switch (@");
-  test("switch (x @");
-  test("switch (x) @");
-  test("switch (x) { @");
-  test("switch (x) { case @");
-  test("switch (x) { case 1 @");
-  test("switch (x) { case 1: @");
-  test("switch (x) { case 1: case @");
-  test("switch (x) { case 1: case 2 @");
-  test("switch (x) { case 1: case 2: @");
-  test("switch (x) { case 1: case 2: x @");
-  test("switch (x) { case 1: case 2: x; @");
-  test("switch (x) { case 1: case 2: x; break @");
-  test("switch (x) { case 1: case 2: x; break; @");
-  test("switch (x) { case 1: case 2: x; break; case @");
-  test("switch (x) { case 1: case 2: x; break; case 3 @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y; @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y; default @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y; default: @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y; default: z @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y; default: z; @");
-  test("switch (x) { case 1: case 2: x; break; case 3: y; default: z; } @");
+  test("switch ");
+  test("switch (");
+  test("switch (x ");
+  test("switch (x) ");
+  test("switch (x) { ");
+  test("switch (x) { case ");
+  test("switch (x) { case 1 ");
+  test("switch (x) { case 1: ");
+  test("switch (x) { case 1: case ");
+  test("switch (x) { case 1: case 2 ");
+  test("switch (x) { case 1: case 2: ");
+  test("switch (x) { case 1: case 2: x ");
+  test("switch (x) { case 1: case 2: x; ");
+  test("switch (x) { case 1: case 2: x; break ");
+  test("switch (x) { case 1: case 2: x; break; ");
+  test("switch (x) { case 1: case 2: x; break; case ");
+  test("switch (x) { case 1: case 2: x; break; case 3 ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y; ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y; default ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y; default: ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y; default: z ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y; default: z; ");
+  test("switch (x) { case 1: case 2: x; break; case 3: y; default: z; } ");
 
   // throw
 
-  test("throw @");
-  test("throw x @");
-  test("throw x; @");
+  test("throw ");
+  test("throw x ");
+  test("throw x; ");
 
   // try...catch
 
-  test("try @");
-  test("try { @");
-  test("try {} @");
-  test("try {} catch @");
-  test("try {} catch ( @");
-  test("try {} catch (e @");
-  test("try {} catch (e) @");
-  test("try {} catch (e) { @");
-  test("try {} catch (e) {} @");
-  test("try {} catch (e) {} finally @");
-  test("try {} catch (e) {} finally { @");
-  test("try {} catch (e) {} finally {} @");
+  test("try ");
+  test("try { ");
+  test("try {} ");
+  test("try {} catch ");
+  test("try {} catch ( ");
+  test("try {} catch (e ");
+  test("try {} catch (e) ");
+  test("try {} catch (e) { ");
+  test("try {} catch (e) {} ");
+  test("try {} catch (e) {} finally ");
+  test("try {} catch (e) {} finally { ");
+  test("try {} catch (e) {} finally {} ");
 
-  test("try {} catch (e if @");
-  test("try {} catch (e if e  @");
-  test("try {} catch (e if e instanceof @");
-  test("try {} catch (e if e instanceof x @");
-  test("try {} catch (e if e instanceof x) @");
-  test("try {} catch (e if e instanceof x) { @");
-  test("try {} catch (e if e instanceof x) {} @");
+  test("try {} catch (e if ");
+  test("try {} catch (e if e  ");
+  test("try {} catch (e if e instanceof ");
+  test("try {} catch (e if e instanceof x ");
+  test("try {} catch (e if e instanceof x) ");
+  test("try {} catch (e if e instanceof x) { ");
+  test("try {} catch (e if e instanceof x) {} ");
 
   // ---- Declarations ----
 
   // var
 
-  test("var @");
-  test("var x @");
-  test("var x = @");
-  test("var x = 1 @");
-  test("var x = 1 + @");
-  test("var x = 1 + 2 @");
-  test("var x = 1 + 2, @");
-  test("var x = 1 + 2, y @");
-  test("var x = 1 + 2, y, @");
-  test("var x = 1 + 2, y, z @");
-  test("var x = 1 + 2, y, z; @");
+  test("var ");
+  test("var x ");
+  test("var x = ");
+  test("var x = 1 ");
+  test("var x = 1 + ");
+  test("var x = 1 + 2 ");
+  test("var x = 1 + 2, ");
+  test("var x = 1 + 2, y ");
+  test("var x = 1 + 2, y, ");
+  test("var x = 1 + 2, y, z ");
+  test("var x = 1 + 2, y, z; ");
 
-  test("var [ @");
-  test("var [ x @");
-  test("var [ x, @");
-  test("var [ x, ... @");
-  test("var { @");
-  test("var { x @");
-  test("var { x: @");
-  test("var { x: y @");
-  test("var { x: y, @");
-  test("var { x: y } @");
-  test("var { x: y } = @");
+  test("var [ ");
+  test("var [ x ");
+  test("var [ x, ");
+  test("var [ x, ... ");
+  test("var { ");
+  test("var { x ");
+  test("var { x: ");
+  test("var { x: y ");
+  test("var { x: y, ");
+  test("var { x: y } ");
+  test("var { x: y } = ");
 
   // let
 
-  test("let @");
-  test("let x @");
-  test("let x = @");
-  test("let x = 1 @");
-  test("let x = 1 + @");
-  test("let x = 1 + 2 @");
-  test("let x = 1 + 2, @");
-  test("let x = 1 + 2, y @");
-  test("let x = 1 + 2, y, @");
-  test("let x = 1 + 2, y, z @");
-  test("let x = 1 + 2, y, z; @");
+  test("let ");
+  test("let x ");
+  test("let x = ");
+  test("let x = 1 ");
+  test("let x = 1 + ");
+  test("let x = 1 + 2 ");
+  test("let x = 1 + 2, ");
+  test("let x = 1 + 2, y ");
+  test("let x = 1 + 2, y, ");
+  test("let x = 1 + 2, y, z ");
+  test("let x = 1 + 2, y, z; ");
 
-  test("let [ @");
-  test("let [ x @");
-  test("let [ x, @");
-  test("let [ x, ... @");
-  test("let { @");
-  test("let { x @");
-  test("let { x: @");
-  test("let { x: y @");
-  test("let { x: y, @");
-  test("let { x: y } @");
-  test("let { x: y } = @");
+  test("let [ ");
+  test("let [ x ");
+  test("let [ x, ");
+  test("let [ x, ... ");
+  test("let { ");
+  test("let { x ");
+  test("let { x: ");
+  test("let { x: y ");
+  test("let { x: y, ");
+  test("let { x: y } ");
+  test("let { x: y } = ");
 
   // const
 
-  test("const @");
-  test("const x @");
-  test("const x = @");
-  test("const x = 1 @");
-  test("const x = 1 + @");
-  test("const x = 1 + 2 @");
-  test("const x = 1 + 2, @");
-  test("const x = 1 + 2, y = 0@");
-  test("const x = 1 + 2, y = 0, @");
-  test("const x = 1 + 2, y = 0, z = 0 @");
-  test("const x = 1 + 2, y = 0, z = 0; @");
+  test("const ");
+  test("const x ");
+  test("const x = ");
+  test("const x = 1 ");
+  test("const x = 1 + ");
+  test("const x = 1 + 2 ");
+  test("const x = 1 + 2, ");
+  test("const x = 1 + 2, y = 0");
+  test("const x = 1 + 2, y = 0, ");
+  test("const x = 1 + 2, y = 0, z = 0 ");
+  test("const x = 1 + 2, y = 0, z = 0; ");
 
-  test("const [ @");
-  test("const [ x @");
-  test("const [ x, @");
-  test("const [ x, ... @");
-  test("const { @");
-  test("const { x @");
-  test("const { x: @");
-  test("const { x: y @");
-  test("const { x: y, @");
-  test("const { x: y } @");
-  test("const { x: y } = @");
+  test("const [ ");
+  test("const [ x ");
+  test("const [ x, ");
+  test("const [ x, ... ");
+  test("const { ");
+  test("const { x ");
+  test("const { x: ");
+  test("const { x: y ");
+  test("const { x: y, ");
+  test("const { x: y } ");
+  test("const { x: y } = ");
 
   // ---- Functions ----
 
   // function
 
-  test("function @");
-  test("function f @");
-  test("function f( @");
-  test("function f(x @");
-  test("function f(x, @");
-  test("function f(x, [ @");
-  test("function f(x, [y @");
-  test("function f(x, [y, @");
-  test("function f(x, [y, { @");
-  test("function f(x, [y, {z @");
-  test("function f(x, [y, {z: @");
-  test("function f(x, [y, {z: zz @");
-  test("function f(x, [y, {z: zz,  @");
-  test("function f(x, [y, {z: zz, w @");
-  test("function f(x, [y, {z: zz, w} @");
-  test("function f(x, [y, {z: zz, w}] @");
-  test("function f(x, [y, {z: zz, w}], @");
-  test("function f(x, [y, {z: zz, w}], v @");
-  test("function f(x, [y, {z: zz, w}], v= @");
-  test("function f(x, [y, {z: zz, w}], v=1 @");
-  test("function f(x, [y, {z: zz, w}], v=1, @");
-  test("function f(x, [y, {z: zz, w}], v=1, ... @");
-  test("function f(x, [y, {z: zz, w}], v=1, ...t @");
-  test("function f(x, [y, {z: zz, w}], v=1, ...t) @");
-  test("function f(x, [y, {z: zz, w}], v=1, ...t) {@");
-  test("function f(x, [y, {z: zz, w}], v=1, ...t) { x @");
-  test("function f(x, [y, {z: zz, w}], v=1, ...t) { x; @");
-  test("function f(x, [y, {z: zz, w}], v=1, ...t) { x; } @");
+  test("function ");
+  test("function f ");
+  test("function f( ");
+  test("function f(x ");
+  test("function f(x, ");
+  test("function f(x, [ ");
+  test("function f(x, [y ");
+  test("function f(x, [y, ");
+  test("function f(x, [y, { ");
+  test("function f(x, [y, {z ");
+  test("function f(x, [y, {z: ");
+  test("function f(x, [y, {z: zz ");
+  test("function f(x, [y, {z: zz,  ");
+  test("function f(x, [y, {z: zz, w ");
+  test("function f(x, [y, {z: zz, w} ");
+  test("function f(x, [y, {z: zz, w}] ");
+  test("function f(x, [y, {z: zz, w}], ");
+  test("function f(x, [y, {z: zz, w}], v ");
+  test("function f(x, [y, {z: zz, w}], v= ");
+  test("function f(x, [y, {z: zz, w}], v=1 ");
+  test("function f(x, [y, {z: zz, w}], v=1, ");
+  test("function f(x, [y, {z: zz, w}], v=1, ... ");
+  test("function f(x, [y, {z: zz, w}], v=1, ...t ");
+  test("function f(x, [y, {z: zz, w}], v=1, ...t) ");
+  test("function f(x, [y, {z: zz, w}], v=1, ...t) {");
+  test("function f(x, [y, {z: zz, w}], v=1, ...t) { x ");
+  test("function f(x, [y, {z: zz, w}], v=1, ...t) { x; ");
+  test("function f(x, [y, {z: zz, w}], v=1, ...t) { x; } ");
 
   // star function
 
-  test("function* @");
-  test("function* f @");
-  test("function* f( @");
-  test("function* f(x @");
-  test("function* f(x, @");
-  test("function* f(x, ... @");
-  test("function* f(x, ...t @");
-  test("function* f(x, ...t) @");
-  test("function* f(x, ...t) {@");
-  test("function* f(x, ...t) { x @");
-  test("function* f(x, ...t) { x; @");
-  test("function* f(x, ...t) { x; } @");
+  test("function* ");
+  test("function* f ");
+  test("function* f( ");
+  test("function* f(x ");
+  test("function* f(x, ");
+  test("function* f(x, ... ");
+  test("function* f(x, ...t ");
+  test("function* f(x, ...t) ");
+  test("function* f(x, ...t) {");
+  test("function* f(x, ...t) { x ");
+  test("function* f(x, ...t) { x; ");
+  test("function* f(x, ...t) { x; } ");
 
   // return
 
-  test("function f() { return @");
-  test("function f() { return 1 @");
-  test("function f() { return 1; @");
-  test("function f() { return 1; } @");
-  test("function f() { return; @");
-  test("function f() { return\n@");
+  test("function f() { return ");
+  test("function f() { return 1 ");
+  test("function f() { return 1; ");
+  test("function f() { return 1; } ");
+  test("function f() { return; ");
+  test("function f() { return\n");
 
   // yield
 
-  test("function* f() { yield @");
-  test("function* f() { yield 1 @");
-  test("function* f() { yield* @");
-  test("function* f() { yield* 1 @");
+  test("function* f() { yield ");
+  test("function* f() { yield 1 ");
+  test("function* f() { yield* ");
+  test("function* f() { yield* 1 ");
 
-  test("function* f() { yield\n@");
-  test("function* f() { yield*\n@");
+  test("function* f() { yield\n");
+  test("function* f() { yield*\n");
 
   // ---- Iterations ----
 
   // do...while
 
-  test("do @");
-  test("do {@");
-  test("do {} @");
-  test("do {} while @");
-  test("do {} while ( @");
-  test("do {} while (x @");
-  test("do {} while (x) @");
-  test("do {} while (x); @");
+  test("do ");
+  test("do {");
+  test("do {} ");
+  test("do {} while ");
+  test("do {} while ( ");
+  test("do {} while (x ");
+  test("do {} while (x) ");
+  test("do {} while (x); ");
 
-  test("do x @");
-  test("do x; @");
-  test("do x; while @");
+  test("do x ");
+  test("do x; ");
+  test("do x; while ");
 
   // for
 
-  test("for @");
-  test("for (@");
-  test("for (x @");
-  test("for (x; @");
-  test("for (x; y @");
-  test("for (x; y; @");
-  test("for (x; y; z @");
-  test("for (x; y; z) @");
-  test("for (x; y; z) { @");
-  test("for (x; y; z) {} @");
+  test("for ");
+  test("for (");
+  test("for (x ");
+  test("for (x; ");
+  test("for (x; y ");
+  test("for (x; y; ");
+  test("for (x; y; z ");
+  test("for (x; y; z) ");
+  test("for (x; y; z) { ");
+  test("for (x; y; z) {} ");
 
-  test("for (x; y; z) x @");
-  test("for (x; y; z) x; @");
+  test("for (x; y; z) x ");
+  test("for (x; y; z) x; ");
 
-  test("for (var @");
-  test("for (var x @");
-  test("for (var x = @");
-  test("for (var x = y @");
-  test("for (var x = y; @");
+  test("for (var ");
+  test("for (var x ");
+  test("for (var x = ");
+  test("for (var x = y ");
+  test("for (var x = y; ");
 
-  test("for (let @");
-  test("for (let x @");
-  test("for (let x = @");
-  test("for (let x = y @");
-  test("for (let x = y; @");
+  test("for (let ");
+  test("for (let x ");
+  test("for (let x = ");
+  test("for (let x = y ");
+  test("for (let x = y; ");
 
   // for...in
 
-  test("for (x in @");
-  test("for (x in y @");
-  test("for (x in y) @");
+  test("for (x in ");
+  test("for (x in y ");
+  test("for (x in y) ");
 
-  test("for (var x in @");
-  test("for (var x in y @");
-  test("for (var x in y) @");
+  test("for (var x in ");
+  test("for (var x in y ");
+  test("for (var x in y) ");
 
-  test("for (let x in @");
-  test("for (let x in y @");
-  test("for (let x in y) @");
+  test("for (let x in ");
+  test("for (let x in y ");
+  test("for (let x in y) ");
 
   // for...of
 
-  test("for (x of @");
-  test("for (x of y @");
-  test("for (x of y) @");
+  test("for (x of ");
+  test("for (x of y ");
+  test("for (x of y) ");
 
-  test("for (var x of @");
-  test("for (var x of y @");
-  test("for (var x of y) @");
+  test("for (var x of ");
+  test("for (var x of y ");
+  test("for (var x of y) ");
 
-  test("for (let x of @");
-  test("for (let x of y @");
-  test("for (let x of y) @");
+  test("for (let x of ");
+  test("for (let x of y ");
+  test("for (let x of y) ");
 
   // while
 
-  test("while @");
-  test("while (@");
-  test("while (x @");
-  test("while (x) @");
-  test("while (x) { @");
-  test("while (x) {} @");
+  test("while ");
+  test("while (");
+  test("while (x ");
+  test("while (x) ");
+  test("while (x) { ");
+  test("while (x) {} ");
 
-  test("while (x) x @");
-  test("while (x) x; @");
+  test("while (x) x ");
+  test("while (x) x; ");
 
   // ---- Others ----
 
   // debugger
 
-  test("debugger @");
-  test("debugger; @");
+  test("debugger ");
+  test("debugger; ");
 
   // export
 
   var opts = { no_fun: true, no_eval: true, module: true };
-  test("export @", opts);
-  test("export { @", opts);
-  test("export { x @", opts);
-  test("export { x, @", opts);
-  test("export { x, y @", opts);
-  test("export { x, y as @", opts);
-  test("export { x, y as z @", opts);
-  test("export { x, y as z } @", opts);
-  test("export { x, y as z } from @", opts);
-  test("export { x, y as z } from 'a' @", opts);
-  test("export { x, y as z } from 'a'; @", opts);
+  test("export ", opts);
+  test("export { ", opts);
+  test("export { x ", opts);
+  test("export { x, ", opts);
+  test("export { x, y ", opts);
+  test("export { x, y as ", opts);
+  test("export { x, y as z ", opts);
+  test("export { x, y as z } ", opts);
+  test("export { x, y as z } from ", opts);
+  test("export { x, y as z } from 'a' ", opts);
+  test("export { x, y as z } from 'a'; ", opts);
 
-  test("export * @", opts);
-  test("export * from @", opts);
-  test("export * from 'a' @", opts);
-  test("export * from 'a'; @", opts);
+  test("export * ", opts);
+  test("export * from ", opts);
+  test("export * from 'a' ", opts);
+  test("export * from 'a'; ", opts);
 
-  test("export function @", opts);
-  test("export function f @", opts);
-  test("export function f( @", opts);
-  test("export function f() @", opts);
-  test("export function f() { @", opts);
-  test("export function f() {} @", opts);
-  test("export function f() {}; @", opts);
+  test("export function ", opts);
+  test("export function f ", opts);
+  test("export function f( ", opts);
+  test("export function f() ", opts);
+  test("export function f() { ", opts);
+  test("export function f() {} ", opts);
+  test("export function f() {}; ", opts);
 
-  test("export var @", opts);
-  test("export var a @", opts);
-  test("export var a = @", opts);
-  test("export var a = 1 @", opts);
-  test("export var a = 1, @", opts);
-  test("export var a = 1, b @", opts);
-  test("export var a = 1, b = @", opts);
-  test("export var a = 1, b = 2 @", opts);
-  test("export var a = 1, b = 2; @", opts);
+  test("export var ", opts);
+  test("export var a ", opts);
+  test("export var a = ", opts);
+  test("export var a = 1 ", opts);
+  test("export var a = 1, ", opts);
+  test("export var a = 1, b ", opts);
+  test("export var a = 1, b = ", opts);
+  test("export var a = 1, b = 2 ", opts);
+  test("export var a = 1, b = 2; ", opts);
 
-  test("export let @", opts);
-  test("export let a @", opts);
-  test("export let a = @", opts);
-  test("export let a = 1 @", opts);
-  test("export let a = 1, @", opts);
-  test("export let a = 1, b @", opts);
-  test("export let a = 1, b = @", opts);
-  test("export let a = 1, b = 2 @", opts);
-  test("export let a = 1, b = 2; @", opts);
+  test("export let ", opts);
+  test("export let a ", opts);
+  test("export let a = ", opts);
+  test("export let a = 1 ", opts);
+  test("export let a = 1, ", opts);
+  test("export let a = 1, b ", opts);
+  test("export let a = 1, b = ", opts);
+  test("export let a = 1, b = 2 ", opts);
+  test("export let a = 1, b = 2; ", opts);
 
-  test("export const @", opts);
-  test("export const a @", opts);
-  test("export const a = @", opts);
-  test("export const a = 1 @", opts);
-  test("export const a = 1, @", opts);
-  test("export const a = 1, b @", opts);
-  test("export const a = 1, b = @", opts);
-  test("export const a = 1, b = 2 @", opts);
-  test("export const a = 1, b = 2; @", opts);
+  test("export const ", opts);
+  test("export const a ", opts);
+  test("export const a = ", opts);
+  test("export const a = 1 ", opts);
+  test("export const a = 1, ", opts);
+  test("export const a = 1, b ", opts);
+  test("export const a = 1, b = ", opts);
+  test("export const a = 1, b = 2 ", opts);
+  test("export const a = 1, b = 2; ", opts);
 
   if (classesEnabled()) {
-    test("export class @", opts);
-    test("export class Foo @", opts);
-    test("export class Foo {  @", opts);
-    test("export class Foo { constructor @", opts);
-    test("export class Foo { constructor( @", opts);
-    test("export class Foo { constructor() @", opts);
-    test("export class Foo { constructor() { @", opts);
-    test("export class Foo { constructor() {} @", opts);
-    test("export class Foo { constructor() {} } @", opts);
-    test("export class Foo { constructor() {} }; @", opts);
+    test("export class ", opts);
+    test("export class Foo ", opts);
+    test("export class Foo {  ", opts);
+    test("export class Foo { constructor ", opts);
+    test("export class Foo { constructor( ", opts);
+    test("export class Foo { constructor() ", opts);
+    test("export class Foo { constructor() { ", opts);
+    test("export class Foo { constructor() {} ", opts);
+    test("export class Foo { constructor() {} } ", opts);
+    test("export class Foo { constructor() {} }; ", opts);
   }
 
-  test("export default @", opts);
-  test("export default 1 @", opts);
-  test("export default 1; @", opts);
+  test("export default ", opts);
+  test("export default 1 ", opts);
+  test("export default 1; ", opts);
 
-  test("export default function @", opts);
-  test("export default function() @", opts);
-  test("export default function() { @", opts);
-  test("export default function() {} @", opts);
-  test("export default function() {}; @", opts);
+  test("export default function ", opts);
+  test("export default function() ", opts);
+  test("export default function() { ", opts);
+  test("export default function() {} ", opts);
+  test("export default function() {}; ", opts);
 
-  test("export default function foo @", opts);
-  test("export default function foo( @", opts);
-  test("export default function foo() @", opts);
-  test("export default function foo() { @", opts);
-  test("export default function foo() {} @", opts);
-  test("export default function foo() {}; @", opts);
+  test("export default function foo ", opts);
+  test("export default function foo( ", opts);
+  test("export default function foo() ", opts);
+  test("export default function foo() { ", opts);
+  test("export default function foo() {} ", opts);
+  test("export default function foo() {}; ", opts);
 
   if (classesEnabled()) {
-    test("export default class @", opts);
-    test("export default class { @", opts);
-    test("export default class { constructor @", opts);
-    test("export default class { constructor( @", opts);
-    test("export default class { constructor() @", opts);
-    test("export default class { constructor() { @", opts);
-    test("export default class { constructor() {} @", opts);
-    test("export default class { constructor() {} } @", opts);
-    test("export default class { constructor() {} }; @", opts);
+    test("export default class ", opts);
+    test("export default class { ", opts);
+    test("export default class { constructor ", opts);
+    test("export default class { constructor( ", opts);
+    test("export default class { constructor() ", opts);
+    test("export default class { constructor() { ", opts);
+    test("export default class { constructor() {} ", opts);
+    test("export default class { constructor() {} } ", opts);
+    test("export default class { constructor() {} }; ", opts);
 
-    test("export default class Foo @", opts);
-    test("export default class Foo { @", opts);
-    test("export default class Foo { constructor @", opts);
-    test("export default class Foo { constructor( @", opts);
-    test("export default class Foo { constructor() @", opts);
-    test("export default class Foo { constructor() { @", opts);
-    test("export default class Foo { constructor() {} @", opts);
-    test("export default class Foo { constructor() {} } @", opts);
-    test("export default class Foo { constructor() {} }; @", opts);
+    test("export default class Foo ", opts);
+    test("export default class Foo { ", opts);
+    test("export default class Foo { constructor ", opts);
+    test("export default class Foo { constructor( ", opts);
+    test("export default class Foo { constructor() ", opts);
+    test("export default class Foo { constructor() { ", opts);
+    test("export default class Foo { constructor() {} ", opts);
+    test("export default class Foo { constructor() {} } ", opts);
+    test("export default class Foo { constructor() {} }; ", opts);
   }
 
   // import
 
-  test("import @", opts);
-  test("import x @", opts);
-  test("import x from @", opts);
-  test("import x from 'a' @", opts);
-  test("import x from 'a'; @", opts);
+  test("import ", opts);
+  test("import x ", opts);
+  test("import x from ", opts);
+  test("import x from 'a' ", opts);
+  test("import x from 'a'; ", opts);
 
-  test("import { @", opts);
-  test("import { x @", opts);
-  test("import { x, @", opts);
-  test("import { x, y @", opts);
-  test("import { x, y } @", opts);
-  test("import { x, y } from @", opts);
-  test("import { x, y } from 'a' @", opts);
-  test("import { x, y } from 'a'; @", opts);
+  test("import { ", opts);
+  test("import { x ", opts);
+  test("import { x, ", opts);
+  test("import { x, y ", opts);
+  test("import { x, y } ", opts);
+  test("import { x, y } from ", opts);
+  test("import { x, y } from 'a' ", opts);
+  test("import { x, y } from 'a'; ", opts);
 
-  test("import { x as @", opts);
-  test("import { x as y @", opts);
-  test("import { x as y } @", opts);
-  test("import { x as y } from @", opts);
-  test("import { x as y } from 'a' @", opts);
-  test("import { x as y } from 'a'; @", opts);
+  test("import { x as ", opts);
+  test("import { x as y ", opts);
+  test("import { x as y } ", opts);
+  test("import { x as y } from ", opts);
+  test("import { x as y } from 'a' ", opts);
+  test("import { x as y } from 'a'; ", opts);
 
-  test("import 'a' @", opts);
-  test("import 'a'; @", opts);
+  test("import 'a' ", opts);
+  test("import 'a'; ", opts);
 
-  test("import * @", opts);
-  test("import * as @", opts);
-  test("import * as a @", opts);
-  test("import * as a from @", opts);
-  test("import * as a from 'a' @", opts);
-  test("import * as a from 'a'; @", opts);
+  test("import * ", opts);
+  test("import * as ", opts);
+  test("import * as a ", opts);
+  test("import * as a from ", opts);
+  test("import * as a from 'a' ", opts);
+  test("import * as a from 'a'; ", opts);
 
-  test("import a @", opts);
-  test("import a, @", opts);
-  test("import a, * @", opts);
-  test("import a, * as @", opts);
-  test("import a, * as b @", opts);
-  test("import a, * as b from @", opts);
-  test("import a, * as b from 'c' @", opts);
-  test("import a, * as b from 'c'; @", opts);
+  test("import a ", opts);
+  test("import a, ", opts);
+  test("import a, * ", opts);
+  test("import a, * as ", opts);
+  test("import a, * as b ", opts);
+  test("import a, * as b from ", opts);
+  test("import a, * as b from 'c' ", opts);
+  test("import a, * as b from 'c'; ", opts);
 
-  test("import a, { @", opts);
-  test("import a, { b @", opts);
-  test("import a, { b } @", opts);
-  test("import a, { b } from @", opts);
-  test("import a, { b } from 'c' @", opts);
-  test("import a, { b } from 'c'; @", opts);
+  test("import a, { ", opts);
+  test("import a, { b ", opts);
+  test("import a, { b } ", opts);
+  test("import a, { b } from ", opts);
+  test("import a, { b } from 'c' ", opts);
+  test("import a, { b } from 'c'; ", opts);
 
   // label
 
-  test("a @");
-  test("a: @");
+  test("a ");
+  test("a: ");
 
   // with
 
   opts = { no_strict: true };
-  test("with @", opts);
-  test("with (@", opts);
-  test("with (x @", opts);
-  test("with (x) @", opts);
-  test("with (x) { @", opts);
-  test("with (x) {} @", opts);
+  test("with ", opts);
+  test("with (", opts);
+  test("with (x ", opts);
+  test("with (x) ", opts);
+  test("with (x) { ", opts);
+  test("with (x) {} ", opts);
 
-  test("with (x) x @", opts);
-  test("with (x) x; @", opts);
+  test("with (x) x ", opts);
+  test("with (x) x; ", opts);
 
   // ==== Expressions and operators ====
 
   // ---- Primary expressions ----
 
   // this
 
-  test("this @");
+  test("this ");
 
   // function
 
-  test("(function @");
-  test("(function ( @");
-  test("(function (x @");
-  test("(function (x, @");
-  test("(function (x, ... @");
-  test("(function (x, ...t @");
-  test("(function (x, ...t) @");
-  test("(function (x, ...t) {@");
-  test("(function (x, ...t) { x @");
-  test("(function (x, ...t) { x; @");
-  test("(function (x, ...t) { x; } @");
-  test("(function (x, ...t) { x; }) @");
+  test("(function ");
+  test("(function ( ");
+  test("(function (x ");
+  test("(function (x, ");
+  test("(function (x, ... ");
+  test("(function (x, ...t ");
+  test("(function (x, ...t) ");
+  test("(function (x, ...t) {");
+  test("(function (x, ...t) { x ");
+  test("(function (x, ...t) { x; ");
+  test("(function (x, ...t) { x; } ");
+  test("(function (x, ...t) { x; }) ");
 
   // star function
 
-  test("(function* @");
-  test("(function* ( @");
-  test("(function* (x @");
-  test("(function* (x, @");
-  test("(function* (x, ... @");
-  test("(function* (x, ...t @");
-  test("(function* (x, ...t) @");
-  test("(function* (x, ...t) {@");
-  test("(function* (x, ...t) { x @");
-  test("(function* (x, ...t) { x; @");
-  test("(function* (x, ...t) { x; } @");
-  test("(function* (x, ...t) { x; }) @");
+  test("(function* ");
+  test("(function* ( ");
+  test("(function* (x ");
+  test("(function* (x, ");
+  test("(function* (x, ... ");
+  test("(function* (x, ...t ");
+  test("(function* (x, ...t) ");
+  test("(function* (x, ...t) {");
+  test("(function* (x, ...t) { x ");
+  test("(function* (x, ...t) { x; ");
+  test("(function* (x, ...t) { x; } ");
+  test("(function* (x, ...t) { x; }) ");
 
   // Array literal
 
-  test("[ @");
-  test("[] @");
-  test("[1 @");
-  test("[1, @");
-  test("[1, ... @");
-  test("[1, ...x @");
-  test("[1, ...x] @");
+  test("[ ");
+  test("[] ");
+  test("[1 ");
+  test("[1, ");
+  test("[1, ... ");
+  test("[1, ...x ");
+  test("[1, ...x] ");
 
   // object
 
-  test("({ @");
-  test("({ x @");
-  test("({ x: @");
-  test("({ x: 1 @");
-  test("({ x: 1, @");
-  test("({ x: 1, y @");
-  test("({ x: 1, y: @");
-  test("({ x: 1, y: 2 @");
-  test("({ x: 1, y: 2, @");
-  test("({ x: 1, y: 2, z @");
-  test("({ x: 1, y: 2, z, @");
-  test("({ x: 1, y: 2, z, w @");
-  test("({ x: 1, y: 2, z, w } @");
-  test("({ x: 1, y: 2, z, w }) @");
+  test("({ ");
+  test("({ x ");
+  test("({ x: ");
+  test("({ x: 1 ");
+  test("({ x: 1, ");
+  test("({ x: 1, y ");
+  test("({ x: 1, y: ");
+  test("({ x: 1, y: 2 ");
+  test("({ x: 1, y: 2, ");
+  test("({ x: 1, y: 2, z ");
+  test("({ x: 1, y: 2, z, ");
+  test("({ x: 1, y: 2, z, w ");
+  test("({ x: 1, y: 2, z, w } ");
+  test("({ x: 1, y: 2, z, w }) ");
 
   // object: computed property
 
-  test("({ [@");
-  test("({ [k @");
-  test("({ [k] @");
-  test("({ [k]: @");
-  test("({ [k]: 1 @");
-  test("({ [k]: 1, @");
+  test("({ [");
+  test("({ [k ");
+  test("({ [k] ");
+  test("({ [k]: ");
+  test("({ [k]: 1 ");
+  test("({ [k]: 1, ");
 
   // object: getter
 
-  test("({ get @");
-  test("({ get p @");
-  test("({ get p( @");
-  test("({ get p() @");
-  test("({ get p() { @");
-  test("({ get p() {} @");
-  test("({ get p() {}, @");
-  test("({ get p() {}, } @");
+  test("({ get ");
+  test("({ get p ");
+  test("({ get p( ");
+  test("({ get p() ");
+  test("({ get p() { ");
+  test("({ get p() {} ");
+  test("({ get p() {}, ");
+  test("({ get p() {}, } ");
 
-  test("({ get [ @");
-  test("({ get [p @");
-  test("({ get [p] @");
-  test("({ get [p]( @");
-  test("({ get [p]() @");
+  test("({ get [ ");
+  test("({ get [p ");
+  test("({ get [p] ");
+  test("({ get [p]( ");
+  test("({ get [p]() ");
 
   // object: setter
 
-  test("({ set @");
-  test("({ set p @");
-  test("({ set p( @");
-  test("({ set p(v @");
-  test("({ set p(v) @");
-  test("({ set p(v) { @");
-  test("({ set p(v) {} @");
+  test("({ set ");
+  test("({ set p ");
+  test("({ set p( ");
+  test("({ set p(v ");
+  test("({ set p(v) ");
+  test("({ set p(v) { ");
+  test("({ set p(v) {} ");
 
-  test("({ set [ @");
-  test("({ set [p @");
-  test("({ set [p] @");
-  test("({ set [p]( @");
-  test("({ set [p](v @");
-  test("({ set [p](v) @");
+  test("({ set [ ");
+  test("({ set [p ");
+  test("({ set [p] ");
+  test("({ set [p]( ");
+  test("({ set [p](v ");
+  test("({ set [p](v) ");
 
   // object: method
 
-  test("({ m @");
-  test("({ m( @");
-  test("({ m() @");
-  test("({ m() { @");
-  test("({ m() {} @");
-  test("({ m() {}, @");
+  test("({ m ");
+  test("({ m( ");
+  test("({ m() ");
+  test("({ m() { ");
+  test("({ m() {} ");
+  test("({ m() {}, ");
 
-  test("({ [ @");
-  test("({ [m @");
-  test("({ [m] @");
-  test("({ [m]( @");
-  test("({ [m]() @");
-  test("({ [m]() { @");
-  test("({ [m]() {} @");
-  test("({ [m]() {}, @");
+  test("({ [ ");
+  test("({ [m ");
+  test("({ [m] ");
+  test("({ [m]( ");
+  test("({ [m]() ");
+  test("({ [m]() { ");
+  test("({ [m]() {} ");
+  test("({ [m]() {}, ");
 
-  test("({ * @");
-  test("({ *m @");
-  test("({ *m( @");
-  test("({ *m() @");
-  test("({ *m() { @");
-  test("({ *m() {} @");
-  test("({ *m() {}, @");
+  test("({ * ");
+  test("({ *m ");
+  test("({ *m( ");
+  test("({ *m() ");
+  test("({ *m() { ");
+  test("({ *m() {} ");
+  test("({ *m() {}, ");
 
-  test("({ *[ @");
-  test("({ *[m @");
-  test("({ *[m] @");
-  test("({ *[m]( @");
-  test("({ *[m]() @");
-  test("({ *[m]() { @");
-  test("({ *[m]() {} @");
-  test("({ *[m]() {}, @");
+  test("({ *[ ");
+  test("({ *[m ");
+  test("({ *[m] ");
+  test("({ *[m]( ");
+  test("({ *[m]() ");
+  test("({ *[m]() { ");
+  test("({ *[m]() {} ");
+  test("({ *[m]() {}, ");
 
-  test("({ * get @");
-  test("({ * get ( @");
-  test("({ * get () @");
-  test("({ * get () { @");
-  test("({ * get () {} @");
-  test("({ * get () {}, @");
+  test("({ * get ");
+  test("({ * get ( ");
+  test("({ * get () ");
+  test("({ * get () { ");
+  test("({ * get () {} ");
+  test("({ * get () {}, ");
 
-  test("({ * set @");
-  test("({ * set ( @");
-  test("({ * set () @");
-  test("({ * set () { @");
-  test("({ * set () {} @");
-  test("({ * set () {}, @");
+  test("({ * set ");
+  test("({ * set ( ");
+  test("({ * set () ");
+  test("({ * set () { ");
+  test("({ * set () {} ");
+  test("({ * set () {}, ");
 
   // Regular expression literal
 
-  test("/a/ @");
-  test("/a/g @");
+  test("/a/ ");
+  test("/a/g ");
 
   // Array comprehensions
 
-  test("[for @");
-  test("[for ( @");
-  test("[for (x @");
-  test("[for (x of @");
-  test("[for (x of y @");
-  test("[for (x of y) @");
-  test("[for (x of y) x @");
-  test("[for (x of y) if @");
-  test("[for (x of y) if ( @");
-  test("[for (x of y) if (x @");
-  test("[for (x of y) if (x == @");
-  test("[for (x of y) if (x == 1 @");
-  test("[for (x of y) if (x == 1) @");
-  test("[for (x of y) if (x == 1) x @");
-  test("[for (x of y) if (x == 1) x] @");
+  test("[for ");
+  test("[for ( ");
+  test("[for (x ");
+  test("[for (x of ");
+  test("[for (x of y ");
+  test("[for (x of y) ");
+  test("[for (x of y) x ");
+  test("[for (x of y) if ");
+  test("[for (x of y) if ( ");
+  test("[for (x of y) if (x ");
+  test("[for (x of y) if (x == ");
+  test("[for (x of y) if (x == 1 ");
+  test("[for (x of y) if (x == 1) ");
+  test("[for (x of y) if (x == 1) x ");
+  test("[for (x of y) if (x == 1) x] ");
 
   // Generator comprehensions
 
-  test("(for @");
-  test("(for ( @");
-  test("(for (x @");
-  test("(for (x of @");
-  test("(for (x of y @");
-  test("(for (x of y) @");
-  test("(for (x of y) x @");
-  test("(for (x of y) if @");
-  test("(for (x of y) if ( @");
-  test("(for (x of y) if (x @");
-  test("(for (x of y) if (x == @");
-  test("(for (x of y) if (x == 1 @");
-  test("(for (x of y) if (x == 1) @");
-  test("(for (x of y) if (x == 1) x @");
-  test("(for (x of y) if (x == 1) x) @");
+  test("(for ");
+  test("(for ( ");
+  test("(for (x ");
+  test("(for (x of ");
+  test("(for (x of y ");
+  test("(for (x of y) ");
+  test("(for (x of y) x ");
+  test("(for (x of y) if ");
+  test("(for (x of y) if ( ");
+  test("(for (x of y) if (x ");
+  test("(for (x of y) if (x == ");
+  test("(for (x of y) if (x == 1 ");
+  test("(for (x of y) if (x == 1) ");
+  test("(for (x of y) if (x == 1) x ");
+  test("(for (x of y) if (x == 1) x) ");
 
   // ---- Left-hand-side expressions ----
 
   // property access
 
-  test("a[ @");
-  test("a[1 @");
-  test("a[1] @");
+  test("a[ ");
+  test("a[1 ");
+  test("a[1] ");
 
-  test("a. @");
-  test("a.b @");
-  test("a.b; @");
+  test("a. ");
+  test("a.b ");
+  test("a.b; ");
 
   // new
 
-  test("new @");
-  test("new f @");
-  test("new f( @");
-  test("new f() @");
-  test("new f(); @");
+  test("new ");
+  test("new f ");
+  test("new f( ");
+  test("new f() ");
+  test("new f(); ");
 
   // ---- Increment and decrement ----
 
-  test("a ++ @");
-  test("a ++; @");
+  test("a ++ ");
+  test("a ++; ");
 
-  test("-- @");
-  test("-- a @");
-  test("-- a; @");
+  test("-- ");
+  test("-- a ");
+  test("-- a; ");
 
   // ---- Unary operators ----
 
   // delete
 
-  test("delete @");
-  test("delete a @");
-  test("delete a[ @");
-  test("delete a[b @");
-  test("delete a[b] @");
-  test("delete a[b]; @");
+  test("delete ");
+  test("delete a ");
+  test("delete a[ ");
+  test("delete a[b ");
+  test("delete a[b] ");
+  test("delete a[b]; ");
 
-  test("delete ( @");
-  test("delete (a @");
-  test("delete (a[ @");
-  test("delete (a[b @");
-  test("delete (a[b] @");
-  test("delete (a[b]) @");
-  test("delete (a[b]); @");
+  test("delete ( ");
+  test("delete (a ");
+  test("delete (a[ ");
+  test("delete (a[b ");
+  test("delete (a[b] ");
+  test("delete (a[b]) ");
+  test("delete (a[b]); ");
 
   // void
 
-  test("void @");
-  test("void a @");
-  test("void a; @");
+  test("void ");
+  test("void a ");
+  test("void a; ");
 
-  test("void (@");
-  test("void (a @");
-  test("void (a) @");
-  test("void (a); @");
+  test("void (");
+  test("void (a ");
+  test("void (a) ");
+  test("void (a); ");
 
   // typeof
 
-  test("typeof @");
-  test("typeof a @");
-  test("typeof a; @");
+  test("typeof ");
+  test("typeof a ");
+  test("typeof a; ");
 
-  test("typeof (@");
-  test("typeof (a @");
-  test("typeof (a) @");
-  test("typeof (a); @");
+  test("typeof (");
+  test("typeof (a ");
+  test("typeof (a) ");
+  test("typeof (a); ");
 
   // -
 
-  test("- @");
-  test("- 1 @");
-  test("- 1; @");
+  test("- ");
+  test("- 1 ");
+  test("- 1; ");
 
   // +
 
-  test("+ @");
-  test("+ 1 @");
-  test("+ 1; @");
+  test("+ ");
+  test("+ 1 ");
+  test("+ 1; ");
 
   // ---- Arithmetic operators ----
 
   // +
 
-  test("1 + @");
-  test("1 + 1 @");
-  test("1 + 1; @");
+  test("1 + ");
+  test("1 + 1 ");
+  test("1 + 1; ");
 
   // ---- Relational operators ----
 
   // in
 
-  test("a in @");
-  test("a in b @");
-  test("a in b; @");
+  test("a in ");
+  test("a in b ");
+  test("a in b; ");
 
   // instanceof
 
-  test("a instanceof @");
-  test("a instanceof b @");
-  test("a instanceof b; @");
+  test("a instanceof ");
+  test("a instanceof b ");
+  test("a instanceof b; ");
 
   // ---- Equality operators ----
 
   // ==
 
-  test("1 == @");
-  test("1 == 1 @");
-  test("1 == 1; @");
+  test("1 == ");
+  test("1 == 1 ");
+  test("1 == 1; ");
 
   // ---- Bitwise shift operators ----
 
   // <<
 
-  test("1 << @");
-  test("1 << 1 @");
-  test("1 << 1; @");
+  test("1 << ");
+  test("1 << 1 ");
+  test("1 << 1; ");
 
   // ---- Binary bitwise operators ----
 
   // &
 
-  test("1 & @");
-  test("1 & 1 @");
-  test("1 & 1; @");
+  test("1 & ");
+  test("1 & 1 ");
+  test("1 & 1; ");
 
   // ---- Binary logical operators ----
 
   // ||
 
-  test("1 || @");
-  test("1 || 1 @");
-  test("1 || 1; @");
+  test("1 || ");
+  test("1 || 1 ");
+  test("1 || 1; ");
 
   // ---- Conditional (ternary) operator ----
 
-  test("1 ? @");
-  test("1 ? 2 @");
-  test("1 ? 2 : @");
-  test("1 ? 2 : 3 @");
-  test("1 ? 2 : 3; @");
+  test("1 ? ");
+  test("1 ? 2 ");
+  test("1 ? 2 : ");
+  test("1 ? 2 : 3 ");
+  test("1 ? 2 : 3; ");
 
   // ---- Assignment operators ----
 
-  test("x = @");
-  test("x = 1 @");
-  test("x = 1 + @");
-  test("x = 1 + 2 @");
-  test("x = 1 + 2; @");
+  test("x = ");
+  test("x = 1 ");
+  test("x = 1 + ");
+  test("x = 1 + 2 ");
+  test("x = 1 + 2; ");
 
   // ---- Comma operator ----
 
-  test("1, @");
-  test("1, 2 @");
-  test("1, 2; @");
+  test("1, ");
+  test("1, 2 ");
+  test("1, 2; ");
 
   // ---- Functions ----
 
   // Arrow functions
 
-  test("a => @");
-  test("a => 1 @");
-  test("a => 1; @");
-  test("a => { @");
-  test("a => {} @");
-  test("a => {}; @");
+  test("a => ");
+  test("a => 1 ");
+  test("a => 1; ");
+  test("a => { ");
+  test("a => {} ");
+  test("a => {}; ");
 
-  test("( @");
-  test("() @");
-  test("() => @");
+  test("( ");
+  test("() ");
+  test("() => ");
 
-  test("(...@");
-  test("(...a @");
-  test("(...a) @");
-  test("(...a) => @");
+  test("(...");
+  test("(...a ");
+  test("(...a) ");
+  test("(...a) => ");
 
-  test("([ @");
-  test("([a @");
-  test("([a] @");
-  test("([a]) @");
-  test("([a]) => @");
+  test("([ ");
+  test("([a ");
+  test("([a] ");
+  test("([a]) ");
+  test("([a]) => ");
 
-  test("({ @");
-  test("({a @");
-  test("({a} @");
-  test("({a}) @");
-  test("({a}) => @");
-  test("({a: @");
-  test("({a: b @");
-  test("({a: b, @");
-  test("({a: b} @");
-  test("({a: b}) @");
-  test("({a: b}) => @");
+  test("({ ");
+  test("({a ");
+  test("({a} ");
+  test("({a}) ");
+  test("({a}) => ");
+  test("({a: ");
+  test("({a: b ");
+  test("({a: b, ");
+  test("({a: b} ");
+  test("({a: b}) ");
+  test("({a: b}) => ");
 
   if (classesEnabled()) {
     // ---- Class declaration ----
 
-    test("class @");
-    test("class a @");
-    test("class a { @");
-    test("class a { constructor @");
-    test("class a { constructor( @");
-    test("class a { constructor() @");
-    test("class a { constructor() { @");
-    test("class a { constructor() { } @");
-    test("class a { constructor() { } } @");
+    test("class ");
+    test("class a ");
+    test("class a { ");
+    test("class a { constructor ");
+    test("class a { constructor( ");
+    test("class a { constructor() ");
+    test("class a { constructor() { ");
+    test("class a { constructor() { } ");
+    test("class a { constructor() { } } ");
 
-    test("class a { constructor() { } static @");
-    test("class a { constructor() { } static m @");
-    test("class a { constructor() { } static m( @");
-    test("class a { constructor() { } static m() @");
-    test("class a { constructor() { } static m() { @");
-    test("class a { constructor() { } static m() {} @");
-    test("class a { constructor() { } static m() {} } @");
+    test("class a { constructor() { } static ");
+    test("class a { constructor() { } static m ");
+    test("class a { constructor() { } static m( ");
+    test("class a { constructor() { } static m() ");
+    test("class a { constructor() { } static m() { ");
+    test("class a { constructor() { } static m() {} ");
+    test("class a { constructor() { } static m() {} } ");
 
-    test("class a { constructor() { } static ( @");
-    test("class a { constructor() { } static () @");
-    test("class a { constructor() { } static () { @");
-    test("class a { constructor() { } static () {} @");
-    test("class a { constructor() { } static () {} } @");
+    test("class a { constructor() { } static ( ");
+    test("class a { constructor() { } static () ");
+    test("class a { constructor() { } static () { ");
+    test("class a { constructor() { } static () {} ");
+    test("class a { constructor() { } static () {} } ");
 
-    test("class a { constructor() { } static get @");
-    test("class a { constructor() { } static get p @");
-    test("class a { constructor() { } static get p( @");
-    test("class a { constructor() { } static get p() @");
-    test("class a { constructor() { } static get p() { @");
-    test("class a { constructor() { } static get p() {} @");
-    test("class a { constructor() { } static get p() {} } @");
+    test("class a { constructor() { } static get ");
+    test("class a { constructor() { } static get p ");
+    test("class a { constructor() { } static get p( ");
+    test("class a { constructor() { } static get p() ");
+    test("class a { constructor() { } static get p() { ");
+    test("class a { constructor() { } static get p() {} ");
+    test("class a { constructor() { } static get p() {} } ");
 
-    test("class a { constructor() { } static set @");
-    test("class a { constructor() { } static set p @");
-    test("class a { constructor() { } static set p( @");
-    test("class a { constructor() { } static set p(v @");
-    test("class a { constructor() { } static set p(v) @");
-    test("class a { constructor() { } static set p(v) { @");
-    test("class a { constructor() { } static set p(v) {} @");
-    test("class a { constructor() { } static set p(v) {} } @");
+    test("class a { constructor() { } static set ");
+    test("class a { constructor() { } static set p ");
+    test("class a { constructor() { } static set p( ");
+    test("class a { constructor() { } static set p(v ");
+    test("class a { constructor() { } static set p(v) ");
+    test("class a { constructor() { } static set p(v) { ");
+    test("class a { constructor() { } static set p(v) {} ");
+    test("class a { constructor() { } static set p(v) {} } ");
 
-    test("class a { constructor() { } * @");
-    test("class a { constructor() { } *m @");
-    test("class a { constructor() { } *m( @");
-    test("class a { constructor() { } *m() @");
-    test("class a { constructor() { } *m() { @");
-    test("class a { constructor() { } *m() {} @");
-    test("class a { constructor() { } *m() {} } @");
+    test("class a { constructor() { } * ");
+    test("class a { constructor() { } *m ");
+    test("class a { constructor() { } *m( ");
+    test("class a { constructor() { } *m() ");
+    test("class a { constructor() { } *m() { ");
+    test("class a { constructor() { } *m() {} ");
+    test("class a { constructor() { } *m() {} } ");
 
-    test("class a { constructor() { } static * @");
-    test("class a { constructor() { } static *m @");
-    test("class a { constructor() { } static *m( @");
-    test("class a { constructor() { } static *m() @");
-    test("class a { constructor() { } static *m() { @");
-    test("class a { constructor() { } static *m() {} @");
-    test("class a { constructor() { } static *m() {} } @");
+    test("class a { constructor() { } static * ");
+    test("class a { constructor() { } static *m ");
+    test("class a { constructor() { } static *m( ");
+    test("class a { constructor() { } static *m() ");
+    test("class a { constructor() { } static *m() { ");
+    test("class a { constructor() { } static *m() {} ");
+    test("class a { constructor() { } static *m() {} } ");
 
-    test("class a extends @");
-    test("class a extends b @");
-    test("class a extends b { @");
+    test("class a extends ");
+    test("class a extends b ");
+    test("class a extends b { ");
 
-    test("class a extends ( @");
-    test("class a extends ( b @");
-    test("class a extends ( b ) @");
-    test("class a extends ( b ) { @");
+    test("class a extends ( ");
+    test("class a extends ( b ");
+    test("class a extends ( b ) ");
+    test("class a extends ( b ) { ");
 
     // ---- Class expression ----
 
-    test("( class @");
-    test("( class a @");
-    test("( class a { @");
-    test("( class a { constructor @");
-    test("( class a { constructor( @");
-    test("( class a { constructor() @");
-    test("( class a { constructor() { @");
-    test("( class a { constructor() { } @");
-    test("( class a { constructor() { } } @");
-    test("( class a { constructor() { } } ) @");
+    test("( class ");
+    test("( class a ");
+    test("( class a { ");
+    test("( class a { constructor ");
+    test("( class a { constructor( ");
+    test("( class a { constructor() ");
+    test("( class a { constructor() { ");
+    test("( class a { constructor() { } ");
+    test("( class a { constructor() { } } ");
+    test("( class a { constructor() { } } ) ");
 
-    test("(class a extends @");
-    test("(class a extends b @");
-    test("(class a extends b { @");
+    test("(class a extends ");
+    test("(class a extends b ");
+    test("(class a extends b { ");
 
-    test("(class a extends ( @");
-    test("(class a extends ( b @");
-    test("(class a extends ( b ) @");
-    test("(class a extends ( b ) { @");
+    test("(class a extends ( ");
+    test("(class a extends ( b ");
+    test("(class a extends ( b ) ");
+    test("(class a extends ( b ) { ");
 
-    test("( class { @");
-    test("( class { constructor @");
-    test("( class { constructor( @");
-    test("( class { constructor() @");
-    test("( class { constructor() { @");
-    test("( class { constructor() { } @");
-    test("( class { constructor() { } } @");
-    test("( class { constructor() { } } ) @");
+    test("( class { ");
+    test("( class { constructor ");
+    test("( class { constructor( ");
+    test("( class { constructor() ");
+    test("( class { constructor() { ");
+    test("( class { constructor() { } ");
+    test("( class { constructor() { } } ");
+    test("( class { constructor() { } } ) ");
 
-    test("(class extends @");
-    test("(class extends b @");
-    test("(class extends b { @");
+    test("(class extends ");
+    test("(class extends b ");
+    test("(class extends b { ");
 
-    test("(class extends ( @");
-    test("(class extends ( b @");
-    test("(class extends ( b ) @");
-    test("(class extends ( b ) { @");
+    test("(class extends ( ");
+    test("(class extends ( b ");
+    test("(class extends ( b ) ");
+    test("(class extends ( b ) { ");
   }
 
   // ---- Other ----
 
   // Literals
 
-  test("a @");
-  test("1 @");
-  test("1. @");
-  test("1.2 @");
-  test("true @");
-  test("false @");
-  test("\"a\" @");
-  test("'a' @");
-  test("null @");
+  test("a ");
+  test("1 ");
+  test("1. ");
+  test("1.2 ");
+  test("true ");
+  test("false ");
+  test("\"a\" ");
+  test("'a' ");
+  test("null ");
 
   // Template strings
 
-  test("`${ @");
-  test("`${a @");
-  test("`${a}` @");
+  test("`${ ");
+  test("`${a ");
+  test("`${a}` ");
 
   // Function calls
 
-  test("f( @");
-  test("f() @");
-  test("f(); @");
+  test("f( ");
+  test("f() ");
+  test("f(); ");
 
-  test("f(... @");
-  test("f(...x @");
-  test("f(...x) @");
+  test("f(... ");
+  test("f(...x ");
+  test("f(...x) ");
 
   // Function constructors
 
-  test_fun_arg("@");
-  test_fun_arg("a @");
-  test_fun_arg("... @");
-  test_fun_arg("...a @");
+  test_fun_arg("");
+  test_fun_arg("a ");
+  test_fun_arg("... ");
+  test_fun_arg("...a ");
 
   // ==== Legacy ====
 
   // let statement
 
-  test("let ( @");
-  test("let ( x @");
-  test("let ( x = @");
-  test("let ( x = 1 @");
-  test("let ( x = 1, @");
-  test("let ( x = 1, y @");
-  test("let ( x = 1, y = @");
-  test("let ( x = 1, y = 2 @");
-  test("let ( x = 1, y = 2 ) @");
-  test("let ( x = 1, y = 2 ) { @");
-  test("let ( x = 1, y = 2 ) { x @");
-  test("let ( x = 1, y = 2 ) { x; @");
-  test("let ( x = 1, y = 2 ) { x; } @");
+  test("let ( ");
+  test("let ( x ");
+  test("let ( x = ");
+  test("let ( x = 1 ");
+  test("let ( x = 1, ");
+  test("let ( x = 1, y ");
+  test("let ( x = 1, y = ");
+  test("let ( x = 1, y = 2 ");
+  test("let ( x = 1, y = 2 ) ");
+  test("let ( x = 1, y = 2 ) { ");
+  test("let ( x = 1, y = 2 ) { x ");
+  test("let ( x = 1, y = 2 ) { x; ");
+  test("let ( x = 1, y = 2 ) { x; } ");
 
   // Expression closures
 
-  test("function f() 1 @");
-  test("function f() 1; @");
-  test("(function () 1 @");
-  test("(function () 1); @");
+  test("function f() 1 ");
+  test("function f() 1; ");
+  test("(function () 1 ");
+  test("(function () 1); ");
 
   // Legacy generator
 
-  test("function f() { (yield @");
-  test("function f() { (yield 1 @");
-  test("function f() { f(yield @");
-  test("function f() { f(yield 1 @");
+  test("function f() { (yield ");
+  test("function f() { (yield 1 ");
+  test("function f() { f(yield ");
+  test("function f() { f(yield 1 ");
 
   // for each...in
 
-  test("for each @");
-  test("for each (@");
-  test("for each (x @");
-  test("for each (x in @");
-  test("for each (x in y @");
-  test("for each (x in y) @");
+  test("for each ");
+  test("for each (");
+  test("for each (x ");
+  test("for each (x in ");
+  test("for each (x in y ");
+  test("for each (x in y) ");
 
-  test("for each (var @");
-  test("for each (var x @");
-  test("for each (var x in @");
-  test("for each (var x in y @");
-  test("for each (var x in y) @");
+  test("for each (var ");
+  test("for each (var x ");
+  test("for each (var x in ");
+  test("for each (var x in y ");
+  test("for each (var x in y) ");
 
-  test("for each (let @");
-  test("for each (let x @");
-  test("for each (let x in @");
-  test("for each (let x in y @");
-  test("for each (let x in y) @");
+  test("for each (let ");
+  test("for each (let x ");
+  test("for each (let x in ");
+  test("for each (let x in y ");
+  test("for each (let x in y) ");
 
   // Legacy array comprehensions
 
-  test("[x @");
-  test("[x for @");
-  test("[x for ( @");
-  test("[x for (x @");
-  test("[x for (x of @");
-  test("[x for (x of y @");
-  test("[x for (x of y) @");
-  test("[x for (x of y) if @");
-  test("[x for (x of y) if ( @");
-  test("[x for (x of y) if (x @");
-  test("[x for (x of y) if (x == @");
-  test("[x for (x of y) if (x == 1 @");
-  test("[x for (x of y) if (x == 1) @");
-  test("[x for (x of y) if (x == 1)] @");
+  test("[x ");
+  test("[x for ");
+  test("[x for ( ");
+  test("[x for (x ");
+  test("[x for (x of ");
+  test("[x for (x of y ");
+  test("[x for (x of y) ");
+  test("[x for (x of y) if ");
+  test("[x for (x of y) if ( ");
+  test("[x for (x of y) if (x ");
+  test("[x for (x of y) if (x == ");
+  test("[x for (x of y) if (x == 1 ");
+  test("[x for (x of y) if (x == 1) ");
+  test("[x for (x of y) if (x == 1)] ");
 
-  test("[x for (x in @");
-  test("[x for (x in y @");
-  test("[x for (x in y) @");
+  test("[x for (x in ");
+  test("[x for (x in y ");
+  test("[x for (x in y) ");
 
-  test("[x for each @");
-  test("[x for each ( @");
-  test("[x for each (x @");
-  test("[x for each (x in @");
-  test("[x for each (x in y @");
-  test("[x for each (x in y) @");
+  test("[x for each ");
+  test("[x for each ( ");
+  test("[x for each (x ");
+  test("[x for each (x in ");
+  test("[x for each (x in y ");
+  test("[x for each (x in y) ");
 
   // Generator expressions
 
-  test("(x @");
-  test("(x for @");
-  test("(x for ( @");
-  test("(x for (x @");
-  test("(x for (x of @");
-  test("(x for (x of y @");
-  test("(x for (x of y) @");
-  test("(x for (x of y) if @");
-  test("(x for (x of y) if ( @");
-  test("(x for (x of y) if (x @");
-  test("(x for (x of y) if (x == @");
-  test("(x for (x of y) if (x == 1 @");
-  test("(x for (x of y) if (x == 1) @");
-  test("(x for (x of y) if (x == 1)) @");
+  test("(x ");
+  test("(x for ");
+  test("(x for ( ");
+  test("(x for (x ");
+  test("(x for (x of ");
+  test("(x for (x of y ");
+  test("(x for (x of y) ");
+  test("(x for (x of y) if ");
+  test("(x for (x of y) if ( ");
+  test("(x for (x of y) if (x ");
+  test("(x for (x of y) if (x == ");
+  test("(x for (x of y) if (x == 1 ");
+  test("(x for (x of y) if (x == 1) ");
+  test("(x for (x of y) if (x == 1)) ");
 
-  test("(x for (x in @");
-  test("(x for (x in y @");
-  test("(x for (x in y) @");
+  test("(x for (x in ");
+  test("(x for (x in y ");
+  test("(x for (x in y) ");
 
-  test("(x for each @");
-  test("(x for each ( @");
-  test("(x for each (x @");
-  test("(x for each (x in @");
-  test("(x for each (x in y @");
-  test("(x for each (x in y) @");
+  test("(x for each ");
+  test("(x for each ( ");
+  test("(x for each (x ");
+  test("(x for each (x in ");
+  test("(x for each (x in y ");
+  test("(x for each (x in y) ");
 
   // asm.js
 
-  test("(function() { 'use asm'; @");
-  test("(function() { 'use asm'; var @");
-  test("(function() { 'use asm'; var a @");
-  test("(function() { 'use asm'; var a = @");
-  test("(function() { 'use asm'; var a = 1 @");
-  test("(function() { 'use asm'; var a = 1; @");
-  test("(function() { 'use asm'; var a = 1; function @");
-  test("(function() { 'use asm'; var a = 1; function f @");
-  test("(function() { 'use asm'; var a = 1; function f( @");
-  test("(function() { 'use asm'; var a = 1; function f() @");
-  test("(function() { 'use asm'; var a = 1; function f() { @");
-  test("(function() { 'use asm'; var a = 1; function f() { } @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [ @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f] @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; } @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; }) @");
-  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; }); @");
+  test("(function() { 'use asm'; ");
+  test("(function() { 'use asm'; var ");
+  test("(function() { 'use asm'; var a ");
+  test("(function() { 'use asm'; var a = ");
+  test("(function() { 'use asm'; var a = 1 ");
+  test("(function() { 'use asm'; var a = 1; ");
+  test("(function() { 'use asm'; var a = 1; function ");
+  test("(function() { 'use asm'; var a = 1; function f ");
+  test("(function() { 'use asm'; var a = 1; function f( ");
+  test("(function() { 'use asm'; var a = 1; function f() ");
+  test("(function() { 'use asm'; var a = 1; function f() { ");
+  test("(function() { 'use asm'; var a = 1; function f() { } ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [ ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f] ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; } ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; }) ");
+  test("(function() { 'use asm'; var a = 1; function f() { } var tbl = [f]; return f; }); ");
 }
--- a/js/src/jit-test/tests/parser/modifier-regexp-vs-div.js
+++ b/js/src/jit-test/tests/parser/modifier-regexp-vs-div.js
@@ -1,12 +1,12 @@
 load(libdir + "syntax.js");
 
-var repl_expr_flags = [
+var postfixes = [
   "/bar/g; @",
   "\n/bar/g; @",
 ];
 
 function check_syntax_error(e, code) {
   assertEq(e instanceof SyntaxError, true);
 }
 
-test_syntax(repl_expr_flags, check_syntax_error, true);
+test_syntax(postfixes, check_syntax_error, true);
--- a/js/src/jit-test/tests/parser/modifier-yield-without-operand-1.js
+++ b/js/src/jit-test/tests/parser/modifier-yield-without-operand-1.js
@@ -1,12 +1,12 @@
 load(libdir + "syntax.js");
 
-var repl_expr_flags = [
+var postfixes = [
   "yield, @",
   "yield; @",
 ];
 
 function check_syntax_error(e, code) {
   // No need to check exception type
 }
 
-test_syntax(repl_expr_flags, check_syntax_error, true);
+test_syntax(postfixes, check_syntax_error, true);
--- a/js/src/jit-test/tests/parser/modifier-yield-without-operand-2.js
+++ b/js/src/jit-test/tests/parser/modifier-yield-without-operand-2.js
@@ -1,13 +1,13 @@
 load(libdir + "syntax.js");
 
-var repl_expr_flags = [
+var postfixes = [
   "yield) @",
   "yield} @",
   "yield] @",
 ];
 
 function check_syntax_error(e, code) {
   // No need to check exception type
 }
 
-test_syntax(repl_expr_flags, check_syntax_error, true);
+test_syntax(postfixes, check_syntax_error, true);
--- a/js/src/jit-test/tests/parser/syntax-error-illegal-character.js
+++ b/js/src/jit-test/tests/parser/syntax-error-illegal-character.js
@@ -1,14 +1,14 @@
 load(libdir + "syntax.js");
 
 var JSMSG_ILLEGAL_CHARACTER = "illegal character";
 
-var repl_expr_flags = [
+var postfixes = [
   "@",
 ];
 
 function check_syntax_error(e, code, name) {
   assertEq(e instanceof SyntaxError, true, name + ": " + code);
   assertEq(e.message, JSMSG_ILLEGAL_CHARACTER, name + ": " + code);
 }
 
-test_syntax(repl_expr_flags, check_syntax_error, false);
+test_syntax(postfixes, check_syntax_error, false);