blob: c06bd2d0628f60849f71fbe268ed1311328672d8 [file] [log] [blame]
Tests for ES6 "let"
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS Does not have syntax error: 'let x = 20; if (truth()) { let x = 30; }'
PASS Does not have syntax error: ''use strict'; let x = 20; if (truth()) { let x = 30; }'
PASS Does not have syntax error: 'let {x} = {x:20}; if (truth()) { let {x} = {x : 20}; }'
PASS Does not have syntax error: ''use strict'; let {x} = {x:20}; if (truth()) { let {x} = {x : 20}; }'
PASS Does not have syntax error: 'let {x} = {x:20}; if (truth()) { let {y: x} = {y : 20}; }'
PASS Does not have syntax error: ''use strict'; let {x} = {x:20}; if (truth()) { let {y: x} = {y : 20}; }'
PASS Does not have syntax error: 'let {x, y: [arr]} = {x:20, y: [10]}; if (truth()) { let {y: x} = {y : 20}; }'
PASS Does not have syntax error: ''use strict'; let {x, y: [arr]} = {x:20, y: [10]}; if (truth()) { let {y: x} = {y : 20}; }'
PASS Does not have syntax error: 'let i = 40; for (let i = 1; i < 2; i++) { let i = 40; i; }'
PASS Does not have syntax error: ''use strict'; let i = 40; for (let i = 1; i < 2; i++) { let i = 40; i; }'
PASS Does not have syntax error: 'let i = 40; let obj = {}; for (let i in obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: ''use strict'; let i = 40; let obj = {}; for (let i in obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: 'let i = 40; let obj = []; for (let i of obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: ''use strict'; let i = 40; let obj = []; for (let i of obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: 'let {i} = 20; let obj = []; for (let {i} of obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: ''use strict'; let {i} = 20; let obj = []; for (let {i} of obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: 'let {i} = 20; let obj = []; for (let {i} in obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: ''use strict'; let {i} = 20; let obj = []; for (let {i} in obj) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: 'let {i} = 20; let obj = []; for (let {i} = {i: 0}; i < 2; i++) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: ''use strict'; let {i} = 20; let obj = []; for (let {i} = {i: 0}; i < 2; i++) { let i = 40; let obj = {}; i; }'
PASS Does not have syntax error: 'function foo() { let foo = 20; }'
PASS Does not have syntax error: ''use strict'; function foo() { let foo = 20; }'
PASS Does not have syntax error: 'function foo(bar) { if (truth()) { let bar; } }'
PASS Does not have syntax error: ''use strict'; function foo(bar) { if (truth()) { let bar; } }'
PASS Does not have syntax error: 'function foo() { var bar; if (truth()) { let bar; } }'
PASS Does not have syntax error: ''use strict'; function foo() { var bar; if (truth()) { let bar; } }'
PASS Does not have syntax error: ';({ get let() { return 50; }, set let(x) { return 50;} });'
PASS Does not have syntax error: ''use strict'; ;({ get let() { return 50; }, set let(x) { return 50;} });'
PASS Does not have syntax error: 'function foo() { { let x; } var x; }'
PASS Does not have syntax error: ''use strict'; function foo() { { let x; } var x; }'
PASS Does not have syntax error: 'var x = (function foo() { const foo = 20; });'
PASS Does not have syntax error: ''use strict'; var x = (function foo() { const foo = 20; });'
PASS Does not have syntax error: 'var x = (function foo() { let foo = 20; });'
PASS Does not have syntax error: ''use strict'; var x = (function foo() { let foo = 20; });'
PASS Does not have syntax error: 'var x = (function foo() { class foo { } });'
PASS Does not have syntax error: ''use strict'; var x = (function foo() { class foo { } });'
PASS Does not have syntax error: ';(function foo() { const foo = 20; });'
PASS Does not have syntax error: ''use strict'; ;(function foo() { const foo = 20; });'
PASS Does not have syntax error: ';(function foo() { let foo = 20; });'
PASS Does not have syntax error: ''use strict'; ;(function foo() { let foo = 20; });'
PASS Does not have syntax error: ';(function foo() { class foo { } });'
PASS Does not have syntax error: ''use strict'; ;(function foo() { class foo { } });'
PASS Does not have syntax error: 'let x = {f: function foo() { const foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = {f: function foo() { const foo = 20; } };'
PASS Does not have syntax error: 'let x = {f: function foo() { let foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = {f: function foo() { let foo = 20; } };'
PASS Does not have syntax error: 'let x = {f: function foo() { class foo { } } };'
PASS Does not have syntax error: ''use strict'; let x = {f: function foo() { class foo { } } };'
PASS Does not have syntax error: 'let x = { foo() { const foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = { foo() { const foo = 20; } };'
PASS Does not have syntax error: 'let x = { foo() { let foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = { foo() { let foo = 20; } };'
PASS Does not have syntax error: 'let x = { foo() { class foo { } } };'
PASS Does not have syntax error: ''use strict'; let x = { foo() { class foo { } } };'
PASS Does not have syntax error: 'let x = { set foo(x) { const foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = { set foo(x) { const foo = 20; } };'
PASS Does not have syntax error: 'let x = { set foo(x) { let foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = { set foo(x) { let foo = 20; } };'
PASS Does not have syntax error: 'let x = { set foo(x) { class foo { } } };'
PASS Does not have syntax error: ''use strict'; let x = { set foo(x) { class foo { } } };'
PASS Does not have syntax error: 'let x = { get foo() { const foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = { get foo() { const foo = 20; } };'
PASS Does not have syntax error: 'let x = { get foo() { let foo = 20; } };'
PASS Does not have syntax error: ''use strict'; let x = { get foo() { let foo = 20; } };'
PASS Does not have syntax error: 'let x = { get foo() { class foo { } } };'
PASS Does not have syntax error: ''use strict'; let x = { get foo() { class foo { } } };'
PASS Does not have syntax error: 'let x; with ({}) let: y = 3;'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'let let;'
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
PASS Has syntax error: ''use strict'; let let;'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'const let;'
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
PASS Has syntax error: ''use strict'; const let;'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'let {let};'
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
PASS Has syntax error: ''use strict'; let {let};'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'let {l: let};'
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
PASS Has syntax error: ''use strict'; let {l: let};'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'let {l: {let}};'
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
PASS Has syntax error: ''use strict'; let {l: {let}};'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'let {l: [let]};'
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
PASS Has syntax error: ''use strict'; let {l: [let]};'
SyntaxError: Unexpected token ';'. Expected an initializer in destructuring variable declaration.
SyntaxError: Unexpected token ';'. Expected an initializer in destructuring variable declaration.
PASS Has syntax error: 'var {let};'
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
PASS Has syntax error: ''use strict'; var {let};'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'let x, x;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; let x, x;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'let x = 20, y, x = 40;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; let x = 20, y, x = 40;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'let x = 20, y; let x = 40;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; let x = 20, y; let x = 40;'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: 'let x = 20, y, {x} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: ''use strict'; let x = 20, y, {x} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: 'let x = 20, y; let {x} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: ''use strict'; let x = 20, y; let {x} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: 'let {x, y, z, x} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: ''use strict'; let {x, y, z, x} = {};'
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
PASS Has syntax error: 'let {x: xx, y, x: xx} = {};'
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
PASS Has syntax error: ''use strict'; let {x: xx, y, x: xx} = {};'
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
PASS Has syntax error: 'let {x: xx, foo: [xx]} = {foo:[12]};'
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
PASS Has syntax error: ''use strict'; let {x: xx, foo: [xx]} = {foo:[12]};'
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
PASS Has syntax error: 'let {x: xx, foo: {y: xx}} = {foo:[12]};'
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
SyntaxError: Unexpected identifier 'xx'. Cannot declare a lexical variable twice: 'xx'.
PASS Has syntax error: ''use strict'; let {x: xx, foo: {y: xx}} = {foo:[12]};'
SyntaxError: Unexpected token ';'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ';'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: 'for (let; ; ) {}'
SyntaxError: Unexpected token ';'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ';'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; for (let; ; ) {}'
SyntaxError: Unexpected identifier 'arr'. Expected either 'in' or 'of' in enumeration syntax.
SyntaxError: Unexpected identifier 'arr'. Expected either 'in' or 'of' in enumeration syntax.
PASS Has syntax error: 'let arr = []; for (let of arr) {}'
SyntaxError: Unexpected identifier 'arr'. Expected either 'in' or 'of' in enumeration syntax.
SyntaxError: Unexpected identifier 'arr'. Expected either 'in' or 'of' in enumeration syntax.
PASS Has syntax error: ''use strict'; let arr = []; for (let of arr) {}'
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
PASS Has syntax error: 'let obj = {}; for (let in arr) {}'
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
PASS Has syntax error: ''use strict'; let obj = {}; for (let in arr) {}'
SyntaxError: Cannot declare a let variable twice: 'i'.
SyntaxError: Cannot declare a let variable twice: 'i'.
PASS Has syntax error: 'for (let i = 20, j = 40, i = 10; i < 10; i++) {}'
SyntaxError: Cannot declare a let variable twice: 'i'.
SyntaxError: Cannot declare a let variable twice: 'i'.
PASS Has syntax error: ''use strict'; for (let i = 20, j = 40, i = 10; i < 10; i++) {}'
SyntaxError: Unexpected identifier 'x'
SyntaxError: Unexpected identifier 'x'
PASS Has syntax error: 'let x = 20; if (truth()) let x = 40;'
SyntaxError: Unexpected keyword 'let'
SyntaxError: Unexpected keyword 'let'
PASS Has syntax error: ''use strict'; let x = 20; if (truth()) let x = 40;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'let baz = 20; if (truth()) { let x = 20; let x = 40;} '
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; let baz = 20; if (truth()) { let x = 20; let x = 40;} '
SyntaxError: Cannot declare a let variable twice: 'bar'.
SyntaxError: Cannot declare a let variable twice: 'bar'.
PASS Has syntax error: 'function foo() { var bar; let bar; }'
SyntaxError: Cannot declare a let variable twice: 'bar'.
SyntaxError: Cannot declare a let variable twice: 'bar'.
PASS Has syntax error: ''use strict'; function foo() { var bar; let bar; }'
SyntaxError: Cannot declare a let variable twice: 'bar'.
SyntaxError: Cannot declare a let variable twice: 'bar'.
PASS Has syntax error: 'function foo(bar) { let bar; }'
SyntaxError: Cannot declare a let variable twice: 'bar'.
SyntaxError: Cannot declare a let variable twice: 'bar'.
PASS Has syntax error: ''use strict'; function foo(bar) { let bar; }'
SyntaxError: Cannot declare a let variable twice: 'foo'.
SyntaxError: Cannot declare a let variable twice: 'foo'.
PASS Has syntax error: 'function foo() {}; let foo;'
SyntaxError: Cannot declare a let variable twice: 'foo'.
SyntaxError: Cannot declare a let variable twice: 'foo'.
PASS Has syntax error: ''use strict'; function foo() {}; let foo;'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
PASS Has syntax error: 'function foo() {}; function bar(){} let baz, {bar} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
PASS Has syntax error: ''use strict'; function foo() {}; function bar(){} let baz, {bar} = {};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
PASS Has syntax error: 'function foo() {}; function bar(){} let baz, {f: {bar}} = {f:{}};'
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
SyntaxError: Unexpected token '}'. Cannot declare a lexical variable twice: 'bar'.
PASS Has syntax error: ''use strict'; function foo() {}; function bar(){} let baz, {f: {bar}} = {f:{}};'
SyntaxError: Unexpected identifier 'bar'. Cannot declare a lexical variable twice: 'bar'.
SyntaxError: Unexpected identifier 'bar'. Cannot declare a lexical variable twice: 'bar'.
PASS Has syntax error: 'function foo() {}; function bar(){} let baz, {f: [bar]} = {f:[10]};'
SyntaxError: Unexpected identifier 'bar'. Cannot declare a lexical variable twice: 'bar'.
SyntaxError: Unexpected identifier 'bar'. Cannot declare a lexical variable twice: 'bar'.
PASS Has syntax error: ''use strict'; function foo() {}; function bar(){} let baz, {f: [bar]} = {f:[10]};'
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
SyntaxError: Unexpected keyword 'let'. Cannot use 'let' as an identifier name for a LexicalDeclaration.
PASS Has syntax error: 'for (let let = 0; let < 10; let++) {}'
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
SyntaxError: Cannot use 'let' as a lexical variable name in strict mode.
PASS Has syntax error: ''use strict'; for (let let = 0; let < 10; let++) {}'
SyntaxError: Unexpected token '['. Expected either 'in' or 'of' in enumeration syntax.
SyntaxError: Unexpected token '['. Expected either 'in' or 'of' in enumeration syntax.
PASS Has syntax error: 'for (let of []) {}'
SyntaxError: Unexpected token '['. Expected either 'in' or 'of' in enumeration syntax.
SyntaxError: Unexpected token '['. Expected either 'in' or 'of' in enumeration syntax.
PASS Has syntax error: ''use strict'; for (let of []) {}'
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
PASS Has syntax error: 'for (let in {}) {}'
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
SyntaxError: Cannot use the keyword 'in' as a lexical variable name.
PASS Has syntax error: ''use strict'; for (let in {}) {}'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'let x; var x;'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; let x; var x;'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'let x; var {x} = 20;'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; let x; var {x} = 20;'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'let x; var [x] = 20;'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; let x; var [x] = 20;'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'function f() { var x; let x; }'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { var x; let x; }'
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: 'function f() { var x; let [x] = 20; }'
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { var x; let [x] = 20; }'
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: 'function f() { var [x] = 20; let [x] = 20; }'
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
SyntaxError: Unexpected identifier 'x'. Cannot declare a lexical variable twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { var [x] = 20; let [x] = 20; }'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'function f() { var [x] = 20; let x; }'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { var [x] = 20; let x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { let x; var x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { let x; var x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { let x; var {x} = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { let x; var {x} = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { let x; var [x] = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { let x; var [x] = 20; }'
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
PASS Has syntax error: 'function f() { let x; function x(){} }'
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
PASS Has syntax error: ''use strict'; function f() { let x; function x(){} }'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: 'function f() { function x(){}; let x; }'
SyntaxError: Cannot declare a let variable twice: 'x'.
SyntaxError: Cannot declare a let variable twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { function x(){}; let x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { const x = 20; var x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { const x = 20; var x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { const x = 20; var {x} = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { const x = 20; var {x} = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { const x = 20; var [x] = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { const x = 20; var [x] = 20; }'
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
PASS Has syntax error: 'function f() { const x = 20; function x(){} }'
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
PASS Has syntax error: ''use strict'; function f() { const x = 20; function x(){} }'
SyntaxError: Cannot declare a const variable twice: 'x'.
SyntaxError: Cannot declare a const variable twice: 'x'.
PASS Has syntax error: 'function f() { function x(){}; const x = 20; }'
SyntaxError: Cannot declare a const variable twice: 'x'.
SyntaxError: Cannot declare a const variable twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { function x(){}; const x = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { class x{}; var x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { class x{}; var x; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { class x{}; var {x} = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { class x{}; var {x} = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: 'function f() { class x{}; var [x] = 20; }'
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
SyntaxError: Cannot declare a var variable that shadows a let/const/class variable: 'x'.
PASS Has syntax error: ''use strict'; function f() { class x{}; var [x] = 20; }'
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
PASS Has syntax error: 'function f() { class x{}; function x(){} }'
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'x' in strict mode.
PASS Has syntax error: ''use strict'; function f() { class x{}; function x(){} }'
SyntaxError: Cannot declare a class twice: 'x'.
SyntaxError: Cannot declare a class twice: 'x'.
PASS Has syntax error: 'function f() { function x(){}; class x{}; }'
SyntaxError: Cannot declare a class twice: 'x'.
SyntaxError: Cannot declare a class twice: 'x'.
PASS Has syntax error: ''use strict'; function f() { function x(){}; class x{}; }'
SyntaxError: Unexpected identifier 'y'
SyntaxError: Unexpected identifier 'y'
PASS Has syntax error: 'let x; with ({}) let y = 3;'
ReferenceError: Can't find variable: let
PASS Does not have syntax error: 'let;'
SyntaxError: Unexpected token ';'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ';'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; let;'
PASS Does not have syntax error: 'var let;'
SyntaxError: Cannot use 'let' as a variable name in strict mode.
SyntaxError: Cannot use 'let' as a variable name in strict mode.
PASS Has syntax error: ''use strict'; var let;'
PASS Does not have syntax error: 'var {let} = 40;'
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'let'.
PASS Has syntax error: ''use strict'; var {let} = 40;'
TypeError: undefined is not a function (near '...[let]...')
PASS Does not have syntax error: 'var [let] = 40;'
SyntaxError: Cannot use 'let' as a variable name in strict mode.
SyntaxError: Cannot use 'let' as a variable name in strict mode.
PASS Has syntax error: ''use strict'; var [let] = 40;'
PASS Does not have syntax error: 'var {p: let} = 40;'
SyntaxError: Cannot use 'let' as a variable name in strict mode.
SyntaxError: Cannot use 'let' as a variable name in strict mode.
PASS Has syntax error: ''use strict'; var {p: let} = 40;'
PASS Does not have syntax error: '(function test(let){});'
SyntaxError: Cannot use 'let' as a parameter name in strict mode.
SyntaxError: Cannot use 'let' as a parameter name in strict mode.
PASS Has syntax error: ''use strict'; (function test(let){});'
PASS Does not have syntax error: 'let: for (v of []) break let;'
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; let: for (v of []) break let;'
PASS Does not have syntax error: 'let: for (v of []) continue let;'
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; let: for (v of []) continue let;'
PASS Does not have syntax error: 'let: for (v in {}) break;'
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; let: for (v in {}) break;'
PASS Does not have syntax error: 'let: for (v in {}) break;'
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; let: for (v in {}) break;'
PASS Does not have syntax error: 'let: for (var v = 0; false; ) {};'
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
SyntaxError: Unexpected token ':'. Expected a parameter pattern or a ')' in parameter list.
PASS Has syntax error: ''use strict'; let: for (var v = 0; false; ) {};'
PASS Does not have syntax error: 'try { } catch(let) {}'
SyntaxError: Cannot use 'let' as a catch parameter name in strict mode.
SyntaxError: Cannot use 'let' as a catch parameter name in strict mode.
PASS Has syntax error: ''use strict'; try { } catch(let) {}'
PASS Does not have syntax error: 'let x; if (true) let: x = 3;'
SyntaxError: Unexpected keyword 'let'
SyntaxError: Unexpected keyword 'let'
PASS Has syntax error: ''use strict'; let x; if (true) let: x = 3;'
PASS successfullyParsed is true
TEST COMPLETE