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