This test checks that the following expressions or statements are valid ECMASCRIPT code or should throw parse error On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". Unary operators and member access PASS Valid: "" PASS Valid: "function f() { }" PASS Invalid: "(a" PASS Invalid: "function f() { (a }" PASS Invalid: "a[5" PASS Invalid: "function f() { a[5 }" PASS Invalid: "a[5 + 6" PASS Invalid: "function f() { a[5 + 6 }" PASS Invalid: "a." PASS Invalid: "function f() { a. }" PASS Invalid: "()" PASS Invalid: "function f() { () }" PASS Invalid: "a.'l'" PASS Invalid: "function f() { a.'l' }" PASS Valid: "a: +~!new a" PASS Valid: "function f() { a: +~!new a }" PASS Invalid: "new -a" PASS Invalid: "function f() { new -a }" PASS Valid: "new (-1)" PASS Valid: "function f() { new (-1) }" PASS Valid: "a: b: c: new f(x++)++" PASS Valid: "function f() { a: b: c: new f(x++)++ }" PASS Valid: "(a)++" PASS Valid: "function f() { (a)++ }" PASS Valid: "(1--).x" PASS Valid: "function f() { (1--).x }" PASS Invalid: "a-- ++" PASS Invalid: "function f() { a-- ++ }" PASS Invalid: "(a:) --b" PASS Invalid: "function f() { (a:) --b }" PASS Valid: "++ -- ++ a" PASS Valid: "function f() { ++ -- ++ a }" PASS Valid: "++ new new a ++" PASS Valid: "function f() { ++ new new a ++ }" PASS Valid: "delete void 0" PASS Valid: "function f() { delete void 0 }" PASS Invalid: "delete the void" PASS Invalid: "function f() { delete the void }" PASS Invalid: "(a++" PASS Invalid: "function f() { (a++ }" PASS Valid: "++a--" PASS Valid: "function f() { ++a-- }" PASS Valid: "++((a))--" PASS Valid: "function f() { ++((a))-- }" PASS Valid: "(a.x++)++" PASS Valid: "function f() { (a.x++)++ }" PASS Invalid: "1: null" PASS Invalid: "function f() { 1: null }" PASS Invalid: "+-!~" PASS Invalid: "function f() { +-!~ }" PASS Invalid: "+-!~((" PASS Invalid: "function f() { +-!~(( }" PASS Invalid: "a)" PASS Invalid: "function f() { a) }" PASS Invalid: "a]" PASS Invalid: "function f() { a] }" PASS Invalid: ".l" PASS Invalid: "function f() { .l }" PASS Invalid: "1.l" PASS Invalid: "function f() { 1.l }" PASS Valid: "1 .l" PASS Valid: "function f() { 1 .l }" Binary and conditional operators PASS Valid: "a + + typeof this" PASS Valid: "function f() { a + + typeof this }" PASS Invalid: "a + * b" PASS Invalid: "function f() { a + * b }" PASS Invalid: "a ? b" PASS Invalid: "function f() { a ? b }" PASS Invalid: "a ? b :" PASS Invalid: "function f() { a ? b : }" PASS Invalid: "%a" PASS Invalid: "function f() { %a }" PASS Invalid: "a-" PASS Invalid: "function f() { a- }" PASS Valid: "a = b ? b = c : d = e" PASS Valid: "function f() { a = b ? b = c : d = e }" PASS Valid: "s: a[1].l ? b.l['s'] ? c++ : d : true" PASS Valid: "function f() { s: a[1].l ? b.l['s'] ? c++ : d : true }" PASS Valid: "a ? b + 1 ? c + 3 * d.l : d[5][6] : e" PASS Valid: "function f() { a ? b + 1 ? c + 3 * d.l : d[5][6] : e }" PASS Valid: "a in b instanceof delete -c" PASS Valid: "function f() { a in b instanceof delete -c }" PASS Invalid: "a in instanceof b.l" PASS Invalid: "function f() { a in instanceof b.l }" PASS Valid: "- - true % 5" PASS Valid: "function f() { - - true % 5 }" PASS Invalid: "- false = 3" PASS Invalid: "function f() { - false = 3 }" PASS Valid: "a: b: c: (1 + null) = 3" PASS Valid: "function f() { a: b: c: (1 + null) = 3 }" PASS Valid: "a[2] = b.l += c /= 4 * 7 ^ !6" PASS Valid: "function f() { a[2] = b.l += c /= 4 * 7 ^ !6 }" PASS Invalid: "a + typeof b += c in d" PASS Invalid: "function f() { a + typeof b += c in d }" PASS Invalid: "typeof a &= typeof b" PASS Invalid: "function f() { typeof a &= typeof b }" PASS Valid: "a: ((typeof (a))) >>>= a || b.l && c" PASS Valid: "function f() { a: ((typeof (a))) >>>= a || b.l && c }" PASS Valid: "a: b: c[a /= f[a %= b]].l[c[x] = 7] -= a ? b <<= f : g" PASS Valid: "function f() { a: b: c[a /= f[a %= b]].l[c[x] = 7] -= a ? b <<= f : g }" PASS Valid: "-void+x['y'].l == x.l != 5 - f[7]" PASS Valid: "function f() { -void+x['y'].l == x.l != 5 - f[7] }" Function calls (and new with arguments) PASS Valid: "a()()()" PASS Valid: "function f() { a()()() }" PASS Valid: "s: l: a[2](4 == 6, 5 = 6)(f[4], 6)" PASS Valid: "function f() { s: l: a[2](4 == 6, 5 = 6)(f[4], 6) }" PASS Valid: "s: eval(a.apply(), b.call(c[5] - f[7]))" PASS Valid: "function f() { s: eval(a.apply(), b.call(c[5] - f[7])) }" PASS Invalid: "a(" PASS Invalid: "function f() { a( }" PASS Invalid: "a(5" PASS Invalid: "function f() { a(5 }" PASS Invalid: "a(5," PASS Invalid: "function f() { a(5, }" PASS Invalid: "a(5,)" PASS Invalid: "function f() { a(5,) }" PASS Invalid: "a(5,6" PASS Invalid: "function f() { a(5,6 }" PASS Valid: "a(b[7], c e.l, new a() > b)" PASS Valid: "function f() { a(b[7], c e.l, new a() > b) }" PASS Invalid: "a(b[5)" PASS Invalid: "function f() { a(b[5) }" PASS Invalid: "a(b.)" PASS Invalid: "function f() { a(b.) }" PASS Valid: "~new new a(1)(i++)(c[l])" PASS Valid: "function f() { ~new new a(1)(i++)(c[l]) }" PASS Invalid: "a(*a)" PASS Invalid: "function f() { a(*a) }" PASS Valid: "((((a))((b)()).l))()" PASS Valid: "function f() { ((((a))((b)()).l))() }" PASS Valid: "(a)[b + (c) / (d())].l--" PASS Valid: "function f() { (a)[b + (c) / (d())].l-- }" PASS Valid: "new (5)" PASS Valid: "function f() { new (5) }" PASS Invalid: "new a(5" PASS Invalid: "function f() { new a(5 }" PASS Valid: "new (f + 5)(6, (g)() - 'l'() - true(false))" PASS Valid: "function f() { new (f + 5)(6, (g)() - 'l'() - true(false)) }" PASS Invalid: "a(.length)" PASS Invalid: "function f() { a(.length) }" function declaration and expression PASS Valid: "function f() {}" PASS Valid: "function f() { function f() {} }" PASS Valid: "function f(a,b) {}" PASS Valid: "function f() { function f(a,b) {} }" PASS Invalid: "function () {}" PASS Invalid: "function f() { function () {} }" PASS Invalid: "function f(a b) {}" PASS Invalid: "function f() { function f(a b) {} }" PASS Invalid: "function f(a,) {}" PASS Invalid: "function f() { function f(a,) {} }" PASS Invalid: "function f(a," PASS Invalid: "function f() { function f(a, }" PASS Invalid: "function f(a, 1) {}" PASS Invalid: "function f() { function f(a, 1) {} }" PASS Valid: "function g(arguments, eval) {}" PASS Valid: "function f() { function g(arguments, eval) {} }" PASS Valid: "function f() {} + function g() {}" PASS Valid: "function f() { function f() {} + function g() {} }" PASS Invalid: "(function a{})" PASS Invalid: "function f() { (function a{}) }" PASS Invalid: "(function this(){})" PASS Invalid: "function f() { (function this(){}) }" PASS Valid: "(delete new function f(){} + function(a,b){}(5)(6))" PASS Valid: "function f() { (delete new function f(){} + function(a,b){}(5)(6)) }" PASS Valid: "6 - function (m) { function g() {} }" PASS Valid: "function f() { 6 - function (m) { function g() {} } }" PASS Invalid: "function l() {" PASS Invalid: "function f() { function l() { }" PASS Invalid: "function l++(){}" PASS Invalid: "function f() { function l++(){} }" Array and object literal, comma operator PASS Valid: "[] in [5,6] * [,5,] / [,,5,,] || [a,] && new [,b] % [,,]" PASS Valid: "function f() { [] in [5,6] * [,5,] / [,,5,,] || [a,] && new [,b] % [,,] }" PASS Invalid: "[5," PASS Invalid: "function f() { [5, }" PASS Invalid: "[," PASS Invalid: "function f() { [, }" PASS Invalid: "(a,)" PASS Invalid: "function f() { (a,) }" PASS Valid: "1 + {get get(){}, set set(a){}, get1:4, set1:get-set, }" PASS Valid: "function f() { 1 + {get get(){}, set set(a){}, get1:4, set1:get-set, } }" PASS Invalid: "1 + {a" PASS Invalid: "function f() { 1 + {a }" PASS Invalid: "1 + {a:" PASS Invalid: "function f() { 1 + {a: }" PASS Invalid: "1 + {get l(" PASS Invalid: "function f() { 1 + {get l( }" PASS Invalid: ",a" PASS Invalid: "function f() { ,a }" PASS Valid: "(4,(5,a(3,4))),f[4,a-6]" PASS Valid: "function f() { (4,(5,a(3,4))),f[4,a-6] }" PASS Invalid: "(,f)" PASS Invalid: "function f() { (,f) }" PASS Invalid: "a,,b" PASS Invalid: "function f() { a,,b }" PASS Invalid: "a ? b, c : d" PASS Invalid: "function f() { a ? b, c : d }" simple statements PASS Valid: "{ }" PASS Valid: "function f() { { } }" PASS Invalid: "{ { }" PASS Invalid: "function f() { { { } }" PASS Valid: "{ ; ; ; }" PASS Valid: "function f() { { ; ; ; } }" PASS Valid: "a: { ; }" PASS Valid: "function f() { a: { ; } }" PASS Invalid: "{ a: }" PASS Invalid: "function f() { { a: } }" PASS Valid: "{} f; { 6 + f() }" PASS Valid: "function f() { {} f; { 6 + f() } }" PASS Valid: "{ a[5],6; {} ++b-new (-5)() } c().l++" PASS Valid: "function f() { { a[5],6; {} ++b-new (-5)() } c().l++ }" PASS Valid: "{ l1: l2: l3: { this } a = 32 ; { i++ ; { { { } } ++i } } }" PASS Valid: "function f() { { l1: l2: l3: { this } a = 32 ; { i++ ; { { { } } ++i } } } }" PASS Valid: "if (a) ;" PASS Valid: "function f() { if (a) ; }" PASS Invalid: "{ if (a) }" PASS Invalid: "function f() { { if (a) } }" PASS Invalid: "if a {}" PASS Invalid: "function f() { if a {} }" PASS Invalid: "if (a" PASS Invalid: "function f() { if (a }" PASS Invalid: "if (a { }" PASS Invalid: "function f() { if (a { } }" PASS Valid: "x: s: if (a) ; else b" PASS Valid: "function f() { x: s: if (a) ; else b }" PASS Invalid: "else {}" PASS Invalid: "function f() { else {} }" PASS Valid: "if (a) if (b) y; else {} else ;" PASS Valid: "function f() { if (a) if (b) y; else {} else ; }" PASS Invalid: "if (a) {} else x; else" PASS Invalid: "function f() { if (a) {} else x; else }" PASS Invalid: "if (a) { else }" PASS Invalid: "function f() { if (a) { else } }" PASS Valid: "if (a.l + new b()) 4 + 5 - f()" PASS Valid: "function f() { if (a.l + new b()) 4 + 5 - f() }" PASS Valid: "if (a) with (x) ; else with (y) ;" PASS Valid: "function f() { if (a) with (x) ; else with (y) ; }" PASS Invalid: "with a.b { }" PASS Invalid: "function f() { with a.b { } }" PASS Valid: "while (a() - new b) ;" PASS Valid: "function f() { while (a() - new b) ; }" PASS Invalid: "while a {}" PASS Invalid: "function f() { while a {} }" PASS Valid: "do ; while(0) i++" PASS Valid: "function f() { do ; while(0) i++ }" PASS Valid: "do if (a) x; else y; while(z)" PASS Valid: "function f() { do if (a) x; else y; while(z) }" PASS Invalid: "do g; while 4" PASS Invalid: "function f() { do g; while 4 }" PASS Invalid: "do g; while ((4)" PASS Invalid: "function f() { do g; while ((4) }" PASS Valid: "{ { do do do ; while(0) while(0) while(0) } }" PASS Valid: "function f() { { { do do do ; while(0) while(0) while(0) } } }" PASS Valid: "do while (0) if (a) {} else y; while(0)" PASS Valid: "function f() { do while (0) if (a) {} else y; while(0) }" PASS Valid: "if (a) while (b) if (c) with(d) {} else e; else f" PASS Valid: "function f() { if (a) while (b) if (c) with(d) {} else e; else f }" PASS Invalid: "break ; break your_limits ; continue ; continue living ; debugger" PASS Invalid: "function f() { break ; break your_limits ; continue ; continue living ; debugger }" PASS Invalid: "debugger X" PASS Invalid: "function f() { debugger X }" PASS Invalid: "break 0.2" PASS Invalid: "function f() { break 0.2 }" PASS Invalid: "continue a++" PASS Invalid: "function f() { continue a++ }" PASS Invalid: "continue (my_friend)" PASS Invalid: "function f() { continue (my_friend) }" PASS Valid: "while (1) break" PASS Valid: "function f() { while (1) break }" PASS Valid: "do if (a) with (b) continue; else debugger; while (false)" PASS Valid: "function f() { do if (a) with (b) continue; else debugger; while (false) }" PASS Invalid: "do if (a) while (false) else debugger" PASS Invalid: "function f() { do if (a) while (false) else debugger }" PASS Invalid: "while if (a) ;" PASS Invalid: "function f() { while if (a) ; }" PASS Valid: "if (a) function f() {} else function g() {}" PASS Valid: "function f() { if (a) function f() {} else function g() {} }" PASS Valid: "if (a()) while(0) function f() {} else function g() {}" PASS Valid: "function f() { if (a()) while(0) function f() {} else function g() {} }" PASS Invalid: "if (a()) function f() { else function g() }" PASS Invalid: "function f() { if (a()) function f() { else function g() } }" PASS Invalid: "if (a) if (b) ; else function f {}" PASS Invalid: "function f() { if (a) if (b) ; else function f {} }" PASS Invalid: "if (a) if (b) ; else function (){}" PASS Invalid: "function f() { if (a) if (b) ; else function (){} }" PASS Valid: "throw a" PASS Valid: "function f() { throw a }" PASS Valid: "throw a + b in void c" PASS Valid: "function f() { throw a + b in void c }" PASS Invalid: "throw" PASS Invalid: "function f() { throw }" var and const statements PASS Valid: "var a, b = null" PASS Valid: "function f() { var a, b = null }" PASS Valid: "const a = 5, b, c" PASS Valid: "function f() { const a = 5, b, c }" PASS Invalid: "var" PASS Invalid: "function f() { var }" PASS Invalid: "var = 7" PASS Invalid: "function f() { var = 7 }" PASS Invalid: "var c (6)" PASS Invalid: "function f() { var c (6) }" PASS Valid: "if (a) var a,b; else const b, c" PASS Valid: "function f() { if (a) var a,b; else const b, c }" PASS Invalid: "var 5 = 6" PASS Invalid: "function f() { var 5 = 6 }" PASS Valid: "while (0) var a, b, c=6, d, e, f=5*6, g=f*h, h" PASS Valid: "function f() { while (0) var a, b, c=6, d, e, f=5*6, g=f*h, h }" PASS Invalid: "var a = if (b) { c }" PASS Invalid: "function f() { var a = if (b) { c } }" PASS Invalid: "var a = var b" PASS Invalid: "function f() { var a = var b }" PASS Valid: "const a = b += c, a, a, a = (b - f())" PASS Valid: "function f() { const a = b += c, a, a, a = (b - f()) }" PASS Invalid: "var a %= b | 5" PASS Invalid: "function f() { var a %= b | 5 }" PASS Invalid: "var (a) = 5" PASS Invalid: "function f() { var (a) = 5 }" PASS Invalid: "var a = (4, b = 6" PASS Invalid: "function f() { var a = (4, b = 6 }" PASS Invalid: "const 'l' = 3" PASS Invalid: "function f() { const 'l' = 3 }" PASS Invalid: "var var = 3" PASS Invalid: "function f() { var var = 3 }" PASS Valid: "var varr = 3 in 1" PASS Valid: "function f() { var varr = 3 in 1 }" PASS Valid: "const a, a, a = void 7 - typeof 8, a = 8" PASS Valid: "function f() { const a, a, a = void 7 - typeof 8, a = 8 }" PASS Valid: "const x_x = 6 /= 7 ? e : f" PASS Valid: "function f() { const x_x = 6 /= 7 ? e : f }" PASS Invalid: "var a = ?" PASS Invalid: "function f() { var a = ? }" PASS Invalid: "const a = *7" PASS Invalid: "function f() { const a = *7 }" PASS Invalid: "var a = :)" PASS Invalid: "function f() { var a = :) }" PASS Valid: "var a = a in b in c instanceof d" PASS Valid: "function f() { var a = a in b in c instanceof d }" PASS Invalid: "var a = b ? c, b" PASS Invalid: "function f() { var a = b ? c, b }" PASS Invalid: "const a = b : c" PASS Invalid: "function f() { const a = b : c }" for statement PASS Valid: "for ( ; ; ) { break }" PASS Valid: "function f() { for ( ; ; ) { break } }" PASS Valid: "for ( a ; ; ) { break }" PASS Valid: "function f() { for ( a ; ; ) { break } }" PASS Valid: "for ( ; a ; ) { break }" PASS Valid: "function f() { for ( ; a ; ) { break } }" PASS Valid: "for ( ; ; a ) { break }" PASS Valid: "function f() { for ( ; ; a ) { break } }" PASS Valid: "for ( a ; a ; ) break" PASS Valid: "function f() { for ( a ; a ; ) break }" PASS Valid: "for ( a ; ; a ) break" PASS Valid: "function f() { for ( a ; ; a ) break }" PASS Valid: "for ( ; a ; a ) break" PASS Valid: "function f() { for ( ; a ; a ) break }" PASS Invalid: "for () { }" PASS Invalid: "function f() { for () { } }" PASS Invalid: "for ( a ) { }" PASS Invalid: "function f() { for ( a ) { } }" PASS Invalid: "for ( ; ) ;" PASS Invalid: "function f() { for ( ; ) ; }" PASS Invalid: "for a ; b ; c { }" PASS Invalid: "function f() { for a ; b ; c { } }" PASS Invalid: "for (a ; { }" PASS Invalid: "function f() { for (a ; { } }" PASS Invalid: "for ( a ; ) ;" PASS Invalid: "function f() { for ( a ; ) ; }" PASS Invalid: "for ( ; a ) break" PASS Invalid: "function f() { for ( ; a ) break }" PASS Valid: "for (var a, b ; ; ) { break } " PASS Valid: "function f() { for (var a, b ; ; ) { break } }" PASS Valid: "for (var a = b, b = a ; ; ) break" PASS Valid: "function f() { for (var a = b, b = a ; ; ) break }" PASS Valid: "for (var a = b, c, d, b = a ; x in b ; ) { break }" PASS Valid: "function f() { for (var a = b, c, d, b = a ; x in b ; ) { break } }" PASS Valid: "for (var a = b, c, d ; ; 1 in a()) break" PASS Valid: "function f() { for (var a = b, c, d ; ; 1 in a()) break }" PASS Invalid: "for ( ; var a ; ) break" PASS Invalid: "function f() { for ( ; var a ; ) break }" PASS Invalid: "for (const a; ; ) break" PASS Invalid: "function f() { for (const a; ; ) break }" PASS Invalid: "for ( %a ; ; ) { }" PASS Invalid: "function f() { for ( %a ; ; ) { } }" PASS Valid: "for (a in b) break" PASS Valid: "function f() { for (a in b) break }" PASS Valid: "for (a() in b) break" PASS Valid: "function f() { for (a() in b) break }" PASS Valid: "for (a().l[4] in b) break" PASS Valid: "function f() { for (a().l[4] in b) break }" PASS Valid: "for (new a in b in c in d) break" PASS Valid: "function f() { for (new a in b in c in d) break }" PASS Valid: "for (new new new a in b) break" PASS Valid: "function f() { for (new new new a in b) break }" PASS Invalid: "for (delete new a() in b) break" PASS Invalid: "function f() { for (delete new a() in b) break }" PASS Invalid: "for (a * a in b) break" PASS Invalid: "function f() { for (a * a in b) break }" PASS Valid: "for ((a * a) in b) break" PASS Valid: "function f() { for ((a * a) in b) break }" PASS Invalid: "for (a++ in b) break" PASS Invalid: "function f() { for (a++ in b) break }" PASS Valid: "for ((a++) in b) break" PASS Valid: "function f() { for ((a++) in b) break }" PASS Invalid: "for (++a in b) break" PASS Invalid: "function f() { for (++a in b) break }" PASS Valid: "for ((++a) in b) break" PASS Valid: "function f() { for ((++a) in b) break }" PASS Invalid: "for (a, b in c) break" PASS Invalid: "function f() { for (a, b in c) break }" PASS Invalid: "for (a,b in c ;;) break" PASS Invalid: "function f() { for (a,b in c ;;) break }" PASS Valid: "for (a,(b in c) ;;) break" PASS Valid: "function f() { for (a,(b in c) ;;) break }" PASS Valid: "for ((a, b) in c) break" PASS Valid: "function f() { for ((a, b) in c) break }" PASS Invalid: "for (a ? b : c in c) break" PASS Invalid: "function f() { for (a ? b : c in c) break }" PASS Valid: "for ((a ? b : c) in c) break" PASS Valid: "function f() { for ((a ? b : c) in c) break }" PASS Valid: "for (var a in b in c) break" PASS Valid: "function f() { for (var a in b in c) break }" PASS Valid: "for (var a = 5 += 6 in b) break" PASS Valid: "function f() { for (var a = 5 += 6 in b) break }" PASS Invalid: "for (var a += 5 in b) break" PASS Invalid: "function f() { for (var a += 5 in b) break }" PASS Invalid: "for (var a = in b) break" PASS Invalid: "function f() { for (var a = in b) break }" PASS Invalid: "for (var a, b in b) break" PASS Invalid: "function f() { for (var a, b in b) break }" PASS Invalid: "for (var a = -6, b in b) break" PASS Invalid: "function f() { for (var a = -6, b in b) break }" PASS Invalid: "for (var a, b = 8 in b) break" PASS Invalid: "function f() { for (var a, b = 8 in b) break }" PASS Valid: "for (var a = (b in c) in d) break" PASS Valid: "function f() { for (var a = (b in c) in d) break }" PASS Invalid: "for (var a = (b in c in d) break" PASS Invalid: "function f() { for (var a = (b in c in d) break }" PASS Invalid: "for (var (a) in b) { }" PASS Invalid: "function f() { for (var (a) in b) { } }" PASS Valid: "for (var a = 7, b = c < d >= d ; f()[6]++ ; --i()[1]++ ) {}" PASS Valid: "function f() { for (var a = 7, b = c < d >= d ; f()[6]++ ; --i()[1]++ ) {} }" try statement PASS Invalid: "try { break } catch(e) {}" PASS Invalid: "function f() { try { break } catch(e) {} }" PASS Valid: "try {} finally { c++ }" PASS Valid: "function f() { try {} finally { c++ } }" PASS Valid: "try { with (x) { } } catch(e) {} finally { if (a) ; }" PASS Valid: "function f() { try { with (x) { } } catch(e) {} finally { if (a) ; } }" PASS Invalid: "try {}" PASS Invalid: "function f() { try {} }" PASS Invalid: "catch(e) {}" PASS Invalid: "function f() { catch(e) {} }" PASS Invalid: "finally {}" PASS Invalid: "function f() { finally {} }" PASS Invalid: "try a; catch(e) {}" PASS Invalid: "function f() { try a; catch(e) {} }" PASS Invalid: "try {} catch(e) a()" PASS Invalid: "function f() { try {} catch(e) a() }" PASS Invalid: "try {} finally a()" PASS Invalid: "function f() { try {} finally a() }" PASS Invalid: "try {} catch(e)" PASS Invalid: "function f() { try {} catch(e) }" PASS Invalid: "try {} finally" PASS Invalid: "function f() { try {} finally }" PASS Invalid: "try {} finally {} catch(e) {}" PASS Invalid: "function f() { try {} finally {} catch(e) {} }" PASS Invalid: "try {} catch (...) {}" PASS Invalid: "function f() { try {} catch (...) {} }" PASS Invalid: "try {} catch {}" PASS Invalid: "function f() { try {} catch {} }" PASS Valid: "if (a) try {} finally {} else b;" PASS Valid: "function f() { if (a) try {} finally {} else b; }" PASS Valid: "if (--a()) do with(1) try {} catch(ke) { f() ; g() } while (a in b) else {}" PASS Valid: "function f() { if (--a()) do with(1) try {} catch(ke) { f() ; g() } while (a in b) else {} }" PASS Invalid: "if (a) try {} else b; catch (e) { }" PASS Invalid: "function f() { if (a) try {} else b; catch (e) { } }" PASS Invalid: "try { finally {}" PASS Invalid: "function f() { try { finally {} }" switch statement PASS Valid: "switch (a) {}" PASS Valid: "function f() { switch (a) {} }" PASS Invalid: "switch () {}" PASS Invalid: "function f() { switch () {} }" PASS Invalid: "case 5:" PASS Invalid: "function f() { case 5: }" PASS Invalid: "default:" PASS Invalid: "function f() { default: }" PASS Invalid: "switch (a) b;" PASS Invalid: "function f() { switch (a) b; }" PASS Invalid: "switch (a) case 3: b;" PASS Invalid: "function f() { switch (a) case 3: b; }" PASS Valid: "switch (f()) { case 5 * f(): default: case '6' - 9: ++i }" PASS Valid: "function f() { switch (f()) { case 5 * f(): default: case '6' - 9: ++i } }" PASS Invalid: "switch (true) { default: case 6: default: }" PASS Invalid: "function f() { switch (true) { default: case 6: default: } }" PASS Invalid: "switch (l) { f(); }" PASS Invalid: "function f() { switch (l) { f(); } }" PASS Invalid: "switch (l) { case 1: ; a: case 5: }" PASS Invalid: "function f() { switch (l) { case 1: ; a: case 5: } }" PASS Valid: "switch (g() - h[5].l) { case 1 + 6: a: b: c: ++f }" PASS Valid: "function f() { switch (g() - h[5].l) { case 1 + 6: a: b: c: ++f } }" PASS Invalid: "switch (g) { case 1: a: }" PASS Invalid: "function f() { switch (g) { case 1: a: } }" PASS Invalid: "switch (g) { case 1: a: default: }" PASS Invalid: "function f() { switch (g) { case 1: a: default: } }" PASS Invalid: "switch g { case 1: l() }" PASS Invalid: "function f() { switch g { case 1: l() } }" PASS Invalid: "switch (g) { case 1:" PASS Invalid: "function f() { switch (g) { case 1: }" PASS Valid: "switch (l) { case a = b ? c : d : }" PASS Valid: "function f() { switch (l) { case a = b ? c : d : } }" PASS Valid: "switch (sw) { case a ? b - 7[1] ? [c,,] : d = 6 : { } : }" PASS Valid: "function f() { switch (sw) { case a ? b - 7[1] ? [c,,] : d = 6 : { } : } }" PASS Invalid: "switch (l) { case b ? c : }" PASS Invalid: "function f() { switch (l) { case b ? c : } }" PASS Valid: "switch (l) { case 1: a: with(g) switch (g) { case 2: default: } default: }" PASS Valid: "function f() { switch (l) { case 1: a: with(g) switch (g) { case 2: default: } default: } }" PASS Invalid: "switch (4 - ) { }" PASS Invalid: "function f() { switch (4 - ) { } }" PASS Invalid: "switch (l) { default case: 5; }" PASS Invalid: "function f() { switch (l) { default case: 5; } }" PASS Invalid: "L: L: ;" PASS Invalid: "function f() { L: L: ; }" PASS Invalid: "L: L1: L: ;" PASS Invalid: "function f() { L: L1: L: ; }" PASS Invalid: "L: L1: L2: L3: L4: L: ;" PASS Invalid: "function f() { L: L1: L2: L3: L4: L: ; }" PASS Invalid: "for(var a,b 'this shouldn't be allowed' false ; ) ;" PASS Invalid: "function f() { for(var a,b 'this shouldn't be allowed' false ; ) ; }" PASS Invalid: "for(var a,b '" PASS Invalid: "function f() { for(var a,b ' }" PASS Invalid: "function __proto__(){}" PASS Invalid: "function f() { function __proto__(){} }" PASS Invalid: "(function __proto__(){})" PASS Invalid: "function f() { (function __proto__(){}) }" PASS Invalid: "'use strict'; function __proto__(){}" PASS Invalid: "function f() { 'use strict'; function __proto__(){} }" PASS Invalid: "'use strict'; (function __proto__(){})" PASS Invalid: "function f() { 'use strict'; (function __proto__(){}) }" PASS successfullyParsed is true TEST COMPLETE