description(
"This test checks that the following expressions or statements are valid ECMASCRIPT code or should throw parse error"
);

function testFailed(msg) {
    description(msg);
    throw new Error("Bad!");
}

function runTest(_a, expectSyntaxError)
{
    var error;

    if (typeof _a != "string")
        testFailed("runTest expects string argument: " + _a);
    try {
        eval(_a);
    } catch (e) {
        error = e;
    }

    if (expectSyntaxError) {
        if (error && error instanceof SyntaxError)
            testPassed(`Invalid: "${_a}". Produced the following syntax error: "${error.toString()}"`);
        else if (error)
            testFailed('Invalid: "' + _a + '" should throw SyntaxError but got ' + (error.name || error));
        else
            testFailed('Invalid: "' + _a + '" but did not throw');
    } else {
        if (!error)
            testPassed('Valid:   "' + _a + '"');
        else if (!(error instanceof SyntaxError))
            testPassed('Valid:   "' + _a + '" with ' + (error.name || error));
        else
            testFailed('Valid:   "' + _a + '" should NOT throw but got ' + (error.name || error));
    }
}

function valid(_a)
{
    // Test both the grammar and the syntax checker
    runTest(_a, false);
    runTest("function f() { " + _a + " }", false);
}

function onlyValidGlobally(_a)
{
    runTest(_a, false);
    runTest("function f() { " + _a + " }", true);
}

function onlyInvalidGlobally(_a)
{
    runTest(_a, true);
    runTest("function f() { " + _a + " }", false);
}

function invalid(_a)
{
    // Test both the grammar and the syntax checker
    runTest(_a, true);
    runTest("function f() { " + _a + " }", true);
}

// known issue:
//   some statements requires statement as argument, and
//   it seems the End-Of-File terminator is converted to semicolon
//      "a:[EOF]" is not parse error, while "{ a: }" is parse error
//      "if (a)[EOF]" is not parse error, while "{ if (a) }" is parse error
// known issues of bison parser:
//   accepts: 'function f() { return 6 + }' (only inside a function declaration)
//   some comma expressions: see reparsing-semicolon-insertion.js

debug  ("Unary operators and member access");

valid  ("");
invalid("(a");
invalid("a[5");
invalid("a[5 + 6");
invalid("a.");
invalid("()");
invalid("a.'l'");
valid  ("a: +~!new a");
invalid("new -a");
valid  ("new (-1)")
invalid("a: b: c: new f(x++)++")
valid  ("(a)++");
invalid("(1--).x");
invalid("a-- ++");
invalid("(a:) --b");
invalid("++ -- ++ a");
invalid("++ new new a ++");
valid  ("delete void 0");
invalid("delete the void");
invalid("(a++");
invalid("++a--");
invalid("++((a))--");
invalid("(a.x++)++");
invalid("1: null");
invalid("+-!~");
invalid("+-!~((");
invalid("a)");
invalid("a]");
invalid(".l");
invalid("1.l");
valid  ("1 .l");

debug ("Octal numbers");

valid  ("'use strict'; 0");
valid  ("0");
invalid("'use strict'; 00");
valid  ("00");
invalid("'use strict'; 08");
valid  ("08");
invalid("'use strict'; 09");
valid  ("09");

debug  ("Binary and conditional operators");

valid  ("a + + typeof this");
invalid("a + * b");
invalid("a ? b");
invalid("a ? b :");
invalid("%a");
invalid("a-");
valid  ("a = b ? b = c : d = e");
valid  ("s: a[1].l ? b.l['s'] ? c++ : d : true");
valid  ("a ? b + 1 ? c + 3 * d.l : d[5][6] : e");
valid  ("a in b instanceof delete -c");
invalid("a in instanceof b.l");
valid  ("- - true % 5");
invalid("- false = 3");
invalid("a: b: c: (1 + null) = 3");
valid  ("a[2] = b.l += c /= 4 * 7 ^ !6");
invalid("a + typeof b += c in d");
invalid("typeof a &= typeof b");
invalid("a: ((typeof (a))) >>>= a || b.l && c");
valid  ("a: b: c[a /= f[a %= b]].l[c[x] = 7] -= a ? b <<= f : g");
valid  ("-void+x['y'].l == x.l != 5 - f[7]");

debug  ("Function calls (and new with arguments)");

valid  ("a()()()");
invalid("s: l: a[2](4 == 6, 5 = 6)(f[4], 6)");
valid  ("s: eval(a.apply(), b.call(c[5] - f[7]))");
invalid("a(");
invalid("a(5");
invalid("a(5,");
valid("a(5,)");
invalid("a(5,6");
valid  ("a(b[7], c <d> e.l, new a() > b)");
invalid("a(b[5)");
invalid("a(b.)");
valid  ("~new new a(1)(i++)(c[l])");
invalid("a(*a)");
valid  ("((((a))((b)()).l))()");
valid  ("(a)[b + (c) / (d())].l--");
valid  ("new (5)");
invalid("new a(5");
valid  ("new (f + 5)(6, (g)() - 'l'() - true(false))");
invalid("a(.length)");

debug  ("function declaration and expression");

valid  ("function f() {}");
valid  ("function f(a,b) {}");
invalid("function () {}");
invalid("function f(a b) {}");
valid("function f(a,) {}");
invalid("function f(a,");
invalid("function f(a, 1) {}");
valid  ("function g(arguments, eval) {}");
valid  ("function f() {} + function g() {}");
invalid("(function a{})");
invalid("(function this(){})");
valid  ("(delete new function f(){} + function(a,b){}(5)(6))");
valid  ("6 - function (m) { function g() {} }");
invalid("function l() {");
invalid("function l++(){}");

debug  ("Array and object literal, comma operator");

// Note these are tested elsewhere, no need to repeat those tests here
valid  ("[] in [5,6] * [,5,] / [,,5,,] || [a,] && new [,b] % [,,]");
invalid("[5,");
invalid("[,");
invalid("(a,)");
valid  ("1 + {get get(){}, set set(a){}, get1:4, set1:get-set, }");
invalid("1 + {a");
invalid("1 + {a:");
invalid("1 + {get l(");
invalid(",a");
valid  ("(4,(5,a(3,4))),f[4,a-6]");
invalid("(,f)");
invalid("a,,b");
invalid("a ? b, c : d");

debug  ("simple statements");

valid  ("{ }");
invalid("{ { }");
valid  ("{ ; ; ; }");
valid  ("a: { ; }");
invalid("{ a: }");
valid  ("{} f; { 6 + f() }");
valid  ("{ a[5],6; {} ++b-new (-5)() } c().l++");
valid  ("{ l1: l2: l3: { this } a = 32 ; { i++ ; { { { } } ++i } } }");
valid  ("if (a) ;");
invalid("{ if (a) }");
invalid("if a {}");
invalid("if (a");
invalid("if (a { }");
valid  ("x: s: if (a) ; else b");
invalid("else {}");
valid  ("if (a) if (b) y; else {} else ;");
invalid("if (a) {} else x; else");
invalid("if (a) { else }");
valid  ("if (a.l + new b()) 4 + 5 - f()");
valid  ("if (a) with (x) ; else with (y) ;");
invalid("with a.b { }");
valid  ("while (a() - new b) ;");
invalid("while a {}");
valid  ("do ; while(0) i++"); // Is this REALLY valid? (Firefox also accepts this)
valid  ("do if (a) x; else y; while(z)");
invalid("do g; while 4");
invalid("do g; while ((4)");
valid  ("{ { do do do ; while(0) while(0) while(0) } }");
valid  ("do while (0) if (a) {} else y; while(0)");
valid  ("if (a) while (b) if (c) with(d) {} else e; else f");
invalid("break ; break your_limits ; continue ; continue living ; debugger");
invalid("debugger X");
invalid("break 0.2");
invalid("continue a++");
invalid("continue (my_friend)");
valid  ("while (1) break");
valid  ("do if (a) with (b) continue; else debugger; while (false)");
invalid("do if (a) while (false) else debugger");
invalid("while if (a) ;");
valid  ("if (a) function f() {} else function g() {}");
invalid("if (a()) while(0) function f() {} else function g() {}");
invalid("if (a()) function f() { else function g() }");
invalid("if (a) if (b) ; else function f {}");
invalid("if (a) if (b) ; else function (){}");
valid  ("throw a");
valid  ("throw a + b in void c");
invalid("throw");

debug  ("var and const statements");

valid  ("var a, b = null");
valid  ("const a = 5, b = 10, c = 20");
invalid("var");
invalid("var = 7");
invalid("var c (6)");
valid  ("if (a) var a,b; else { const b = 1, c = 2; }");
invalid("if (a) var a,b; else { const b, c }");
invalid("var 5 = 6");
valid  ("while (0) var a, b, c=6, d, e, f=5*6, g=f*h, h");
invalid("var a = if (b) { c }");
invalid("var a = var b");
invalid("const a = b += c, a, a, a = (b - f())");
invalid("var a %= b | 5");
invalid("var (a) = 5");
invalid("var a = (4, b = 6");
invalid("const 'l' = 3");
invalid("var var = 3");
valid  ("var varr = 3 in 1");
valid  ("const  a = void 7 - typeof 8, b = 8");
invalid("const a, a, a = void 7 - typeof 8, a = 8");
invalid("const x_x = 6 /= 7 ? e : f");
invalid("var a = ?");
invalid("const a = *7");
invalid("var a = :)");
valid  ("var a = a in b in c instanceof d");
invalid("var a = b ? c, b");
invalid("const a = b : c");
valid("const a = 7; eval(''); a++");
valid("const a = 7; eval(''); a--");
valid("const a = 7; with({}) a++");
valid("const a = 7; with({}) a--");
valid("const a = 7; eval(''); a+=1");
valid("const a = 7; eval(''); a-=1");
valid("const a = 7; with({}) a+=1");
valid("const a = 7; with({}) a-=1");
valid("const a = 7; eval(''); a=1");
valid("const a = 7; eval(''); a=1");
valid("const a = 7; with({}) a=1");
valid("const a = 7; with({}) a=1");


debug  ("for statement");

valid  ("for ( ; ; ) { break }");
valid  ("for ( a ; ; ) { break }");
valid  ("for ( ; a ; ) { break }");
valid  ("for ( ; ; a ) { break }");
valid  ("for ( a ; a ; ) break");
valid  ("for ( a ; ; a ) break");
valid  ("for ( ; a ; a ) break");
invalid("for () { }");
invalid("for ( a ) { }");
invalid("for ( ; ) ;");
invalid("for a ; b ; c { }");
invalid("for (a ; { }");
invalid("for ( a ; ) ;");
invalid("for ( ; a ) break");
valid  ("for (var a, b ; ; ) { break } ");
valid  ("for (var a = b, b = a ; ; ) break");
valid  ("for (var a = b, c, d, b = a ; x in b ; ) { break }");
valid  ("for (var a = b, c, d ; ; 1 in a()) break");
invalid("for ( ; var a ; ) break");
invalid("for (const x; ; ) break");
invalid("for (const x = 20, y; ; ) break");
valid  ("for (const x = 20; ; ) break");
valid  ("for (const x of []) break");
valid  ("for (const x in {}) break");
invalid("for (const x = 20, x = 30; ; ) { const x = 20; break; }");
valid  ("for (const x = 20; ; ) { const x = 20; break; }");
valid  ("for (const x of []) { const x = 20; break; }");
valid  ("for (const x in {}) { const x = 20; break; }");
invalid("for (const let = 10; ; ) { break; }");
invalid("for (const let in {}) { break; }");
invalid("for (const let of []) { break; }");
invalid("for (let let = 10; ; ) { break; }");
invalid("for (let let in {}) { break; }");
invalid("for (let let of []) { break; }");
invalid("for ( %a ; ; ) { }");
valid  ("for (a in b) break");
valid  ("for (a() in b) break");
valid  ("for (a().l[4] in b) break");
valid  ("for (new a in b in c in d) break");
valid  ("for (new new new a in b) break");
invalid("for (delete new a() in b) break");
invalid("for (a * a in b) break");
valid  ("for ((a * a) in b) break");
invalid("for (a++ in b) break");
valid  ("for ((a++) in b) break");
invalid("for (++a in b) break");
valid  ("for ((++a) in b) break");
invalid("for (a, b in c) break");
invalid("for (a,b in c ;;) break");
valid  ("for (a,(b in c) ;;) break");
valid  ("for ((a, b) in c) break");
invalid("for (a ? b : c in c) break");
valid  ("for ((a ? b : c) in c) break");
valid  ("for (var a in b in c) break");
invalid("for (var a = 5 += 6 in b) break");
valid("for (var a = foo('should be hit') in b) break");
invalid("for (var a += 5 in b) break");
invalid("for (var a = in b) break");
invalid("for (var a, b in b) break");
invalid("for (var a = -6, b in b) break");
invalid("for (var a, b = 8 in b) break");
valid("for (var a = (b in c) in d) break");
invalid("for (var a = (b in c in d) break");
invalid("for (var (a) in b) { }");
invalid("for (var a = 7, b = c < d >= d ; f()[6]++ ; --i()[1]++ ) {}");
invalid("for (var {a} = 20 in b) { }");
invalid("for (var {a} = 20 of b) { }");
invalid("for (var {a} = 20 in b) { }");
valid("for (var i = 20 in b) { }");
invalid("for (var i = 20 of b) { }");
invalid("for (var {i} = 20 of b) { }");
invalid("for (var [i] = 20 of b) { }");
invalid("for (let [i] = 20 of b) { }");
invalid("for (const [i] = 20 of b) { }");
invalid("for (const i = 20 of b) { }");
invalid("for (let i = 20 of b) { }");
invalid("for (let i = 20 in b) { }");
invalid("for (const i = 20 in b) { }");
invalid("for (const {i} = 20 in b) { }");
invalid("for (let {i} = 20 in b) { }");
valid("function x(i) { for (let i in {}) { } }");
valid("function x(i) { for (let i of []) { } }");
valid("function x(i) { for (let i of []) { } }");
valid("function x(i) { for (let i; false; ) { } }");
valid("let f = (i) => { for (let i in {}) { } }");
valid("let f = (i) => { for (let i of []) { } }");
valid("let f = (i) => { for (let i of []) { } }");
valid("let f = (i) => { for (let i; false; ) { } }");
valid("function* x(i) { for (let i in {}) { } }");
valid("function* x(i) { for (let i of []) { } }");
valid("function* x(i) { for (let i of []) { } }");
valid("function* x(i) { for (let i; false; ) { } }");
valid("function x(i) { for (const i in {}) { } }");
valid("function x(i) { for (const i of []) { } }");
valid("function x(i) { for (const i of []) { } }");
valid("function x(i) { for (const i = 20; false; ) { } }");
valid("let f = (i) => { for (const i in {}) { } }");
valid("let f = (i) => { for (const i of []) { } }");
valid("let f = (i) => { for (const i of []) { } }");
valid("let f = (i) => { for (const i = 20; false; ) { } }");
valid("function* x(i) { for (const i in {}) { } }");
valid("function* x(i) { for (const i of []) { } }");
valid("function* x(i) { for (const i of []) { } }");
valid("function* x(i) { for (const i = 20; false; ) { } }");

debug  ("try statement");

invalid("try { break } catch(e) {}");
valid  ("try {} finally { c++ }");
valid  ("try { with (x) { } } catch(e) {} finally { if (a) ; }");
invalid("try {}");
invalid("catch(e) {}");
invalid("finally {}");
invalid("try a; catch(e) {}");
invalid("try {} catch(e) a()");
invalid("try {} finally a()");
invalid("try {} catch(e)");
invalid("try {} finally");
invalid("try {} finally {} catch(e) {}");
invalid("try {} catch (...) {}");
valid  ("try {} catch {}");
valid  ("if (a) try {} finally {} else b;");
valid  ("if (--a()) do with(1) try {} catch(ke) { f() ; g() } while (a in b) else {}");
invalid("if (a) try {} else b; catch (e) { }");
invalid("try { finally {}");

debug  ("switch statement");

valid  ("switch (a) {}");
invalid("switch () {}");
invalid("case 5:");
invalid("default:");
invalid("switch (a) b;");
invalid("switch (a) case 3: b;");
valid  ("switch (f()) { case 5 * f(): default: case '6' - 9: ++i }");
invalid("switch (true) { default: case 6: default: }");
invalid("switch (l) { f(); }");
invalid("switch (l) { case 1: ; a: case 5: }");
valid  ("switch (g() - h[5].l) { case 1 + 6: a: b: c: ++f }");
invalid("switch (g) { case 1: a: }");
invalid("switch (g) { case 1: a: default: }");
invalid("switch g { case 1: l() }");
invalid("switch (g) { case 1:");
valid  ("switch (l) { case a = b ? c : d : }");
valid  ("switch (sw) { case a ? b - 7[1] ? [c,,] : d = 6 : { } : }");
invalid("switch (l) { case b ? c : }");
valid  ("switch (l) { case 1: a: with(g) switch (g) { case 2: default: } default: }");
invalid("switch (4 - ) { }");
invalid("switch (l) { default case: 5; }");

invalid("L: L: ;");
invalid("L: L1: L: ;");
invalid("L: L1: L2: L3: L4: L: ;");

invalid("for(var a,b 'this shouldn\'t be allowed' false ; ) ;");
invalid("for(var a,b '");

valid("function __proto__(){}")
valid("(function __proto__(){})")
valid("'use strict'; function __proto__(){}")
valid("'use strict'; (function __proto__(){})")

valid("'use strict'; function f1(a) { function f2(b) { return b; } return f2(a); } f1(5);")
valid("'use strict'; function f1(a) { function f2(b) { function f3(c) { return c; } return f3(b); } return f2(a); } f1(5);")
valid("'use strict'; function f1(a) { if (a) { function f2(b) { return b; } return f2(a); } else return a; } f1(5);")
valid("'use strict'; function f1(a) { function f2(b) { if (b) { function f3(c) { return c; } return f3(b); } else return b; } return f2(a); } f1(5);")
valid("'use strict'; function f1(a) {}; function f1(a) {};")
invalid("'use strict'; { function f1(a) {}; function f1(a) {}; }")
invalid("'use strict'; { let f1; function f1(a) {}; }")
invalid("'use strict'; { function f1(a) {}; let f1; }")
invalid("'use strict'; let f1; function f1(a) {};")
invalid("'use strict'; function f1(a) {}; let f1; ")
invalid("let f1; function f1(a) {};")
valid("function foo() { let f1; { function f1(a) {}; } }")
valid("function foo() { { function f1(a) {}; } let f1; }")
valid("function foo() { { function foo() { }; function foo() { } } }")
invalid("function foo() { 'use strict'; { function foo() { }; function foo() { } } }")
invalid("function foo() { let f1; function f1(a) {}; }")
invalid("let f1; function f1(a) {};")
invalid("{ function f1(a) {}; let f1; }")
invalid("{ function f1(a) {}; const f1 = 25; }")
invalid("{ function f1(a) {}; class f1{}; }")
invalid("function foo() { { let bar; function bar() { } } }")
invalid("function foo() { { function bar() { }; let bar; } }")
invalid("function foo() { { const bar; function bar() { } } }")
invalid("function foo() { { function bar() { }; const bar; } }")
invalid("function foo() { { class bar{}; function bar() { } } }")
invalid("function foo() { { function bar() { }; class bar{}; } }")
valid("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }")
invalid("switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }")
invalid("switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }")
invalid("switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }")
invalid("switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }")
invalid("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }")
valid("function foo() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: { let foo; } } }")
invalid("'use strict'; switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }");
invalid("'use strict'; switch('foo') { case 1: function foo() {}; break; case 2: let foo; break; }");
invalid("'use strict'; switch('foo') { case 1: let foo; break; case 2: function foo() {}; break; }");
valid("'use strict'; switch('foo') { case 1: { let foo; break; } case 2: function foo() {}; break; }");
valid("'use strict'; switch('foo') { case 1: { function foo() { }; break; } case 2: function foo() {}; break; }");
invalid("'use strict'; if (true) function foo() { }; ");
valid("if (true) function foo() { }; ");
valid(" let foo; if (true) function foo() { };");
valid("function baz() { let foo; if (true) function foo() { }; }");
valid("if (true) function foo() { }; let foo;");
valid("{ if (true) function foo() { }; } let foo;");
invalid("let foo; while (false) function foo() { }; ");
invalid("let foo;  { while (false) function foo() { }; } ");
invalid("while (false) function foo() { }; let foo;");
invalid("let foo; while (false) label: function foo() { }; ");
invalid("while (false) label: function foo() { }; let foo;");
invalid("'use strict'; while (false) function foo() { }; ");
invalid("'use strict'; if (false) function foo() { }; ");
invalid("'use strict'; do function foo() { } while (false); ");
invalid("while (false) function foo() { }; ");
valid("if (false) function foo() { }; ");
invalid("do function foo() { } while (false); ");
invalid("if (cond) label: function foo() { }");
invalid("while (true) { while (true) function bar() { } }");
invalid("with ({}) function bar() { }");
valid("function bar() { label: function baz() { } }");
valid("function bar() { let: function baz() { } }");
invalid("function bar() { 'use strict'; let: function baz() { } }");
valid("function bar() { yield: function baz() { } }");
valid("function bar() { label: label2: function baz() { } }");
valid("function bar() { label: label2: label3: function baz() { } }");
invalid("function bar() { label: label2: label weird: function baz() { } }");
valid("function bar() { label: label2: label3: function baz() { } }");
invalid("function bar() { 'use strict'; label: label2: label 3: function baz() { } }");
invalid("function bar() { if (cond) label: function foo() { } }");
invalid("function bar() { while (cond) label: function foo() { } }");
valid("label: function foo() { }");
valid("let: function foo() { }");
valid("yield: function foo() { }");
valid("yield: let: function foo() { }");
invalid("'use strict'; yield: let: function foo() { }");

valid("var str = \"'use strict'; function f1(a) { function f2(b) { return b; } return f2(a); } return f1(arguments[0]);\"; var foo = new Function(str); foo(5);")
valid("var str = \"'use strict'; function f1(a) { function f2(b) { function f3(c) { return c; } return f3(b); } return f2(a); } return f1(arguments[0]);\"; var foo = new Function(str); foo(5);")
valid("var str = \"'use strict'; function f1(a) { if (a) { function f2(b) { return b; } return f2(a); } else return a; } return f1(arguments[0]);\"; var foo = new Function(str); foo(5);")
valid("var str = \"'use strict'; function f1(a) { function f2(b) { if (b) { function f3(c) { return c; } return f3(b); } else return b; } return f2(a); } return f1(arguments[0]);\"; var foo = new Function(str); foo(5);")

valid("if (0) $foo; ")
valid("if (0) _foo; ")
valid("if (0) foo$; ")
valid("if (0) foo_; ")
valid("if (0) obj.$foo; ")
valid("if (0) obj._foo; ")
valid("if (0) obj.foo$; ")
valid("if (0) obj.foo_; ")
valid("if (0) obj.foo\\u03bb; ")
valid("if (0) new a(b+c).d = 5");
invalid("if (0) new a(b+c) = 5");
valid("([1 || 1].a = 1)");
valid("({a: 1 || 1}.a = 1)");

invalid("var a.b = c");
invalid("var a.b;");

valid("for (of of of){}")
valid("for (of; of; of){}")
valid("for (var of of of){}")
valid("for (var of; of; of){}")
invalid("for (var of.of of of){}")
invalid("for (var of[of] of of){}")
valid("for (of.of of of){}")
valid("for (of[of] of of){}")
valid("for (var [of] of of){}")
valid("for (var {of} of of){}")
valid("for (of in of){}")
valid("for (var of in of){}")
invalid("for (var of.of in of){}")
valid("for (of.of in of){}")
valid("for (of[of] in of){}")
invalid("for (var of[of] in of){}")
valid("for (var [of] in of){}")
valid("for (var {of} in of){}")
valid("for ([of] in of){}")
valid("for ({of} in of){}")
invalid("for (var of = x of of){}")
invalid("for (var {of} = x of of){}")
invalid("for (var [of] = x of of){}")


invalid("for (of of of of){}")
invalid("for (of of; of; of){}")
invalid("for (of of []; of; of){}")
invalid("for (of of){}")
invalid("for (var of of){}")
invalid("for (of of in of){}")
invalid("for (of in){}")
invalid("for (var of in){}")

debug("spread operator and destructuring")
valid("foo(...bar)")
valid("o.foo(...bar)")
valid("o[foo](...bar)")
valid("new foo(...bar)")
valid("new o.foo(...bar)")
valid("new o[foo](...bar)")
invalid("foo(...)")
invalid("o.foo(...)")
invalid("o[foo](...)")
invalid("foo(bar...)")
invalid("o.foo(bar...)")
invalid("o[foo](bar...)")
valid("foo(a,...bar)")
valid("o.foo(a,...bar)")
valid("o[foo](a,...bar)")
valid("foo(...bar, a)")
valid("o.foo(...bar, a)")
valid("o[foo](...bar, a)")
valid("[...bar]")
valid("[a, ...bar]")
valid("[...bar, a]")
valid("[...bar,,,,]")
valid("[,,,,...bar]")
valid("({1: x})")
valid("({1: x}=1)")
valid("({1: x}=null)")
valid("({1: x})")
valid("({1: x}=1)")
valid("({1: x}=null)")
valid("({a: b}=null)")
valid("'use strict'; ({1: x})")
valid("'use strict'; ({1: x}=1)")
valid("'use strict'; ({1: x}=null)")
valid("'use strict'; ({a: b}=null)")
valid("var {1:x}=1")
valid("var {x}=1")
valid("var {x, y}=1")
valid("var [x]=1")
valid("var [x, y]=1")
valid("[x]=1")
valid("var [x]=1")
valid("({[x]: 1})")
valid("delete ({a}=1)")
valid("delete ({a:a}=1)")
valid("({a}=1)()")
valid("({a:a}=1)()")
invalid("({a}=1)=1")
invalid("({a:a}=1)=1")
invalid("({a}=1=1)")
invalid("({a:a}=1=1)")
invalid("var {x}")
invalid("var {x, y}")
invalid("var {x} = 20, {x, y}")
invalid("var {foo:bar, bar:baz}")
invalid("var [x]")
invalid("var [x, y]")
invalid("var [x] = [], [x, y]")
valid("({get x(){}})")
valid("({set x(x){}})")
invalid("({get x(a){}})")
invalid("({get x(a,b){}})")
invalid("({set x(){}})")
invalid("({set x(a,b){}})")
valid("({get [x](){}})")
invalid("({get [x (){}})")
invalid("({set [x](){}})")
valid("({set [x](x){}})")
invalid("({set [x (x){}})")
valid("({set foo(x) { } })");
valid("({set foo(x) { 'use strict'; } })");
invalid("({set foo(x = 20) { 'use strict'; } })");
invalid("({set foo({x}) { 'use strict'; } })");
invalid("({set foo([x]) { 'use strict'; } })");
invalid("({set foo(...x) {} })");
valid("class Foo { set v(z) { } }");
valid("class Foo { set v(z) { 'use strict'; } }");
invalid("class Foo { set v(z = 50) { 'use strict'; } }");
invalid("class Foo { set v({z}) { 'use strict'; } }");
invalid("class Foo { set v([z]) { 'use strict'; } }");
invalid("class Foo { set v(...z) { } }");
invalid("class foo { set y([x, y, x]) { } }");
invalid("class foo { set y([x, y, {x}]) { } }");
invalid("class foo { set y({x, x}) { } }");
invalid("class foo { set y({x, field: {x}}) { } }");
valid("class foo { set y({x, field: {xx}}) { } }");
invalid("({[...x]: 1})")
invalid("function f({a, a}) {}");
invalid("function f({a}, a) {}");
invalid("function f([b, b]) {}");
invalid("function f([b], b) {}");
invalid("function f({a: {b}}, b) {}");
valid("function f(a, b = 20) {}");
valid("function f(a = 20, b = a) {}");
valid("function f({a = 20} = {a: 40}, b = a) {}");
valid("function f([a,b,c] = [1,2,3]) {}");
invalid("function f(a, a=20) {}");
invalid("function f({a} = 20, a=20) {}");
invalid("function f([a,b,a] = [1,2,3]) {}");
invalid("function f([a,b,c] = [1,2,3], a) {}");
invalid("function f([a,b,c] = [1,2,3], {a}) {}");
valid("( function(){ return this || eval('this'); }().x = 'y' )");
invalid("function(){ return this || eval('this'); }().x = 'y'");
invalid("1 % +");
invalid("1 % -");
invalid("1 % typeof");
invalid("1 % void");
invalid("1 % !");
invalid("1 % ~");
invalid("1 % delete");
invalid("1 % ++");
invalid("1 % --");
invalid("1 % \n++");
invalid("1 % \n--");
invalid('let {w} = (foo-=()), {} = ("a" ^= "b");');
invalid('const {w} = (foo-=()), {} = ("a" ^= "b");');
invalid('var {w} = (foo-=()), {} = ("a" ^= "b");');
invalid('let {w} = ();');
invalid('let {w} = 1234abc;');
invalid('const {w} = 1234abc;');
invalid('var {w} = 1234abc;');
invalid("var [...x = 20] = 20;");
invalid("var [...[...x = 20]] = 20;");
valid("var [...x] = 20;");
valid("var [...[...x]] = 20;");
valid("var [...[...{x}]] = 20;");
valid("var [...[x = 20, ...y]] = 20;");
valid("var [...[{x} = 20, ...y]] = 20;");
valid("var {x: [y, ...[...[...{z: [...z]}]]]} = 20");
valid("var {x: [y, {z: {z: [...z]}}]} = 20");
invalid("var [...y, ...z] = 20");
valid("var [...{...y}] = 20");
valid("var {a, b, ...r} = {a: 1, b: 2, c: 3};");
invalid("var {a, b, ...{d}} = {a: 1, b: 2, c: 3, d: 4};");
invalid("var {a, b, ...{d = 15}} = {a: 1, b: 2, c: 3, d: 4};");
invalid("var {a, b, ...{d = 15, ...r}} = {a: 1, b: 2, c: 3, d: 4};");
valid("(({a, b, ...r}) => {})({a: 1, b: 2, c: 3, d: 4});");
valid("(function ({a, b, ...r}) {})({a: 1, b: 2, c: 3, d: 4});");
valid("var a, b, c; ({a, b, ...r} = {a: 1, b: 2, c: 3, d: 4});");
valid("try { throw {a:2} } catch({...rest}) {}");
valid("let c = {}; let o = {a: 1, b: 2, ...c};");
valid("let o = {a: 1, b: 3, ...{}};");
valid("let o = {a: 1, b: 2, ...null, c: 3};");
valid("let o = {a: 1, b: 2, ...undefined, c: 3};");
valid("let o = {a: 1, b: 2, ...{...{}}, c: 3};");
valid("let c = {}; let o = {a: 1, b: 2, ...c, d: 3, ...c, e: 5};");
valid("let o = {a: 1, b: 2, ...d = {e: 2}, c: 3};");
valid("let p = true; let o = {a: 1, b: 2, ...d = p ? {e: 2} : {f: 4}, c: 3};");
valid("let o = {a: 1, b: 2, ...(a) => 3, c: 3};");
valid("function * foo() { return {a: 1, b: 2, ...yield, c: 3}; }");
invalid("function * foo(o) { ({...{ x = yield }} = o); }");
invalid("var {...r = {a: 2}} = {a: 1, b: 2};");
invalid("var {...r, b} = {a: 1, b: 2};");
invalid("var {...r, ...e} = {a: 1, b: 2};");
invalid("({...new Object()} = {a: 1, b: 2});");
invalid("(function * (o) { ({ ...{ x: yield } } = o); })()");
invalid("(function () {'use strict'; ({...eval} = {}); })()");
invalid("(function () {'use strict'; ({...arguments} = {}); })()");
invalid("async function foo () { let {...await} = {}; }");
invalid("let {...let} = {a: 1, b: 2};");
invalid("const {...let} = {a: 1, b: 2};");
invalid("try { throw {a:2} } catch({...foo.a}) {}");

debug("Rest parameter");
valid("function foo(...a) { }");
valid("function foo(a, ...b) { }");
valid("function foo(a = 20, ...b) { }");
valid("function foo(a, b, c, d, e, f, g, ...h) { }");
invalid("function foo(a, ...b, c) { }")
invalid("function foo(a, ...b, ) { }")
invalid("function foo(a, ...[b], ) { }")
invalid("function foo(a, ...{b}, ) { }")
invalid("function foo(a, ...a) { }");
invalid("function foo(...a, ...b) { }");
invalid("function foo(...b, ...b) { }");
invalid("function foo(...b  ...b) { }");
invalid("function foo(a, a, ...b) { }");
invalid("function foo(a, ...{b} = 20) { }");
invalid("function foo(a, ...b = 20) { }");
valid("function foo(...{b}) { }");
valid("function foo(...[b]) { }");
invalid("function foo(...123) { }");
invalid("function foo(...123abc) { }");
valid("function foo(...abc123) { }");
valid("function foo(...let) { }");
invalid("'use strict'; function foo(...let) { }");
invalid("'use strict'; function foo(...[let]) { }");
valid("function foo(...yield) { }");
invalid("'use strict'; function foo(...yield) { }");
invalid("function foo(...if) { }");
valid("let x = (...a) => { }");
valid("let x = (a, ...b) => { }");
valid("let x = (a = 20, ...b) => { }");
invalid("let x = (a = 20, ...b, ...c) => { }");
valid("let x = (a = 20, ...[...b]) => { }");
valid("let x = (a = 20, ...[...[b = 40]]) => { }");
valid("let x = (a = 20, ...{b}) => { }");
valid("let x = (a = 20, ...{...b}) => { }");
invalid("let x = (a = 20, ...{124}) => { }");

debug("non-simple parameter list")
invalid("function foo(...restParam) { 'use strict'; }");
invalid("function foo(...restParam) { 'a'; 'use strict'; }");
invalid("function foo({x}) { 'use strict'; }");
invalid("function foo({x}) { 'a'; 'use strict'; }");
invalid("function foo(a = 20) { 'use strict'; }");
invalid("function foo(a = 20) { 'a'; 'use strict'; }");
invalid("function foo({a} = 20) { 'use strict'; }");
invalid("function foo({a} = 20) { 'a'; 'use strict'; }");
invalid("function foo([a]) { 'use strict'; }");
invalid("function foo([a]) { 'a'; 'use strict'; }");
invalid("function foo(foo, bar, a = 25) { 'use strict'; }");
invalid("function foo(foo, bar, a = 25) { 'a'; 'use strict'; }");
invalid("function foo(foo, bar, baz, ...rest) { 'use strict'; }");
invalid("function foo(foo, bar, baz, ...rest) { 'a'; 'use strict'; }");
invalid("function foo(a = function() { }) { 'use strict'; a(); }");
invalid("function foo(a = function() { }) { 'a'; 'use strict'; a(); }");
invalid("let foo = (...restParam) => { 'use strict'; }");
invalid("let foo = (...restParam) => { 'a'; 'use strict'; }");
invalid("let foo = ({x}) => { 'use strict'; }");
invalid("let foo = ({x}) => { 'a'; 'use strict'; }");
invalid("let foo = (a = 20) => { 'use strict'; }");
invalid("let foo = (a = 20) => { 'a'; 'use strict'; }");
invalid("let foo = ({a} = 20) => { 'use strict'; }");
invalid("let foo = ({a} = 20) => { 'a'; 'use strict'; }");
invalid("let foo = ([a]) => { 'use strict'; }");
invalid("let foo = ([a]) => { 'a'; 'use strict'; }");
invalid("let foo = (foo, bar, a = 25) => { 'use strict'; }");
invalid("let foo = (foo, bar, a = 25) => { 'a'; 'use strict'; }");
invalid("let foo = (foo, bar, baz, ...rest) => { 'use strict'; }");
invalid("let foo = (foo, bar, baz, ...rest) => { 'a'; 'use strict'; }");
invalid("let foo = (a = function() { }) => { 'use strict'; a(); }");
invalid("let foo = (a = function() { }) => { 'a'; 'use strict'; a(); }");
valid("function outer() { 'use strict'; function foo(...restParam) {  } }");
valid("function outer() { 'use strict'; function foo(a,b,c,...restParam) {  } }");
valid("function outer() { 'use strict'; function foo(a = 20,b,c,...restParam) {  } }");
valid("function outer() { 'use strict'; function foo(a = 20,{b},c,...restParam) {  } }");
valid("function outer() { 'use strict'; function foo(a = 20,{b},[c] = 5,...restParam) {  } }");
valid("function outer() { 'use strict'; function foo(a = 20) {  } }");
valid("function outer() { 'use strict'; function foo(a,b,c,{d} = 20) {  } }");
invalid("function outer() { 'use strict'; function foo(...restParam) { 'use strict';  } }");
invalid("function outer() { 'use strict'; function foo(a,b,c,...restParam) {  'use strict'; } }");
invalid("function outer() { 'use strict'; function foo(a = 20,b,c,...restParam) {  'use strict'; } }");
invalid("function outer() { 'use strict'; function foo(a = 20,{b},c,...restParam) { 'use strict'; } }");
invalid("function outer() { 'use strict'; function foo(a = 20,{b},[c] = 5,...restParam) { 'use strict'; } }");
invalid("function outer() { 'use strict'; function foo(a = 20) {  'use strict';} }");
invalid("function outer() { 'use strict'; function foo(a,b,c,{d} = 20) { 'use strict'; } }");

debug("Arrow function");
valid("var x = (x) => x;");
valid("var x = (x, y, z) => x;");
valid("var x = ({x}, [y], z) => x;");
valid("var x = ({x = 30}, [y], z) => x;");
valid("var x = (x = 20) => x;");
valid("var x = ([x] = 20, y) => x;");
valid("var x = ([x = 20] = 20) => x;");
valid("var x = foo => x;");
valid("var x = foo => x => x => x => x;");
valid("var x = foo => x => (x = 20) => (x = 20) => x;");
valid("var x = foo => x => x => x => {x};");
valid("var x = ([x = 25]) => x => x => ({x} = {});");
invalid("var x = foo => x => x => {x} => x;");
invalid("var x = {x} = 20 => x;");
invalid("var x = [x] = 20 => x;");
invalid("var x = [x = 25] = 20 => x;");
invalid("var x = ([x = 25]) =>;");
invalid("var x = ([x = 25]) => x =>;");
invalid("var x = ([x = 25]) => x => x =>;");
invalid("var x = ([x = 25]) => x => x => {;");
invalid("var x ==> x;");
invalid("var x = x ==> x;");
valid("foo((x) => x)");
valid("foo((x, y, z) => x)");
valid("foo(({x}, [y], z) => x)");
valid("foo(({x = 30}, [y], z) => x)");
valid("foo((x = 20) => x)");
valid("foo(([x] = 20, y) => x)");
valid("foo(([x = 20] = 20) => x)");
valid("foo(foo => x)");
valid("foo(foo => x => x => x => x)");
valid("foo(foo => x => (x = 20) => (x = 20) => x)");
valid("foo(foo => x => x => x => {x})");
valid("foo(([x = 25]) => x => x => ({x} = {}))");
invalid("foo(foo => x => x => {x} => x)");
invalid("foo({x} = 20 => x)");
invalid("foo([x] = 20 => x)");
invalid("foo([x = 25] = 20 => x)");
invalid("foo(([x = 25]) =>)");
invalid("foo(([x = 25]) => x =>)");
invalid("foo(([x = 25]) => x => x =>)");
invalid("foo(([x = 25]) => x => x => {)");
invalid("foo(x ==> x)");
invalid("foo(x = x ==> x)");
valid("var f = cond ? ()=>20 : ()=>20");
valid("var f = cond ? (x)=>{x} : ()=>20");
valid("var f = cond ? (x)=>x : ()=>{2}");
valid("var f = cond ? (x)=>x : x=>2");
valid("var f = cond ? x=>x : x=>2");
valid("var f = cond ? x=>x*2 : x=>2");
valid("var f = cond ? x=>x.foo : x=>2");
valid("var f = cond ? x=>x.foo : x=>x + x + x + x + x + x + x");
valid("var f = cond ? x=>{x.foo } : x=>x + x + x + x + x + x + (x =>x) ");
valid("var f = (x) => x => (x) => ({y}) => y");
invalid("var f = cond ? x=>x.foo; : x=>x + x + x + x + x + x + x");
invalid("var f = cond ? x=>x.foo : : x=>x + x + x + x + x + x + x");
invalid("var f = cond ? x=>{x.foo :} : x=>x + x + x + x + x + x + x");
invalid("var f = cond ? x=>{x.foo } => : x=>x + x + x + x + x + x + x");
valid("class C { constructor() { this._x = 45; } get foo() { return this._x;} } class D extends C { x(y = () => super.foo) { return y(); } }");
valid("class C { constructor() { this._x = 45; } get foo() { return this._x;} } class D extends C { x(y = () => {return super.foo}) { return y(); } }");
valid("class C { constructor() { this._x = 45; } get foo() { return this._x;} } class D extends C { x(y = () => {return () => super.foo}) { return y()(); } }");
valid("class C { constructor() { this._x = 45; } get foo() { return this._x;} } class D extends C { x(y = (y = () => super.foo) => {return y()}) { return y(); } }");
valid("class C { constructor() { this._x = 45; } get foo() { return this._x;} } class D extends C { constructor(x = () => super.foo) { super(); this._x_f = x; } x() { return this._x_f(); } }");
valid("class C { constructor() { this._x = 45; } get foo() { return this._x;} } class D extends C { constructor(x = () => super()) { x(); } x() { return super.foo; } }");
invalid("let x = (a,a)=>a;");
invalid("let x = ([a],a)=>a;");
invalid("let x = ([a, a])=>a;");
invalid("let x = ({a, b:{a}})=>a;");
invalid("let x = (a,a)=>{ a };");
invalid("let x = ([a],a)=>{ };");
invalid("let x = ([a, a])=>{ };");
invalid("let x = (a, ...a)=>{ };");
invalid("let x = (b, c, b)=>{ };");
invalid("let x = (a, b, c, d, {a})=>{ };");
invalid("let x = (b = (a,a)=>a, b)=>{ };");
invalid("((a,a)=>a);");
invalid("let x = (a)\n=>a;");

invalid("({ foo(a,a){} });");
invalid("({ foo(b, c, b){} });");
invalid("({ *foo(a,a){} });");
invalid("({ *foo(b, c, b){} });");
invalid("({ async foo(a,a){} });");
invalid("({ async foo(b, c, b){} });");
valid("({ foo: function(a,a){} });");
valid("({ foo: function(b, c, b){} });");
valid("({ foo: function*(a,a){} });");
valid("({ foo: function*(b, c, b){} });");
valid("({ foo: async function(a,a){} });");
valid("({ foo: async function(b, c, b){} });");
invalid("({ foo({a},a){} });");
invalid("({ foo(a,{a}){} });");
invalid("({ foo(a,...a){} });");
invalid("({ foo({a},...a){} });");
invalid("({ foo({...a},...a){} });");
invalid("({ *foo({a},a){} });");
invalid("({ *foo(a,{a}){} });");
invalid("({ *foo(a,...a){} });");
invalid("({ *foo({a},...a){} });");
invalid("({ *foo({...a},...a){} });");
invalid("({ async foo({a},a){} });");
invalid("({ async foo(a,{a}){} });");
invalid("({ async foo(a,...a){} });");
invalid("({ async foo({a},...a){} });");
invalid("({ async foo({...a},...a){} });");
valid("({ foo(a, ...b){} });");
valid("({ foo({a}, ...b){} });");
valid("({ foo({a, ...b}){} });");
valid("({ foo({b, ...a}, ...c){} });");

debug("Weird things that used to crash.");
invalid(`or ([[{break //(elseifo (a=0;a<2;a++)n=
        [[{aFYY sga=
        [[{a=Yth FunctionRY&=Ylet 'a'}V a`)

try { eval("a.b.c = {};"); } catch(e1) { e=e1; shouldBe("e.line", "1") }
foo = 'FAIL';
bar = 'PASS';
try {
     eval("foo = 'PASS'; a.b.c = {}; bar  = 'FAIL';");
} catch(e) {
     shouldBe("foo", "'PASS'");
     shouldBe("bar", "'PASS'");
}
