Index: test/mjsunit/harmony/block-let-declaration.js |
=================================================================== |
--- test/mjsunit/harmony/block-let-declaration.js (revision 9808) |
+++ test/mjsunit/harmony/block-let-declaration.js (working copy) |
@@ -32,15 +32,18 @@ |
// Global |
let x; |
let y = 2; |
+const z = 4; |
// Block local |
{ |
let y; |
let x = 3; |
+ const z = 5; |
} |
assertEquals(undefined, x); |
assertEquals(2,y); |
+assertEquals(4,z); |
if (true) { |
let y; |
@@ -58,7 +61,7 @@ |
assertDoesNotThrow("(function(){" + str + "})()"); |
} |
-// Test let declarations statement positions. |
+// Test let declarations in statement positions. |
TestLocalThrows("if (true) let x;", SyntaxError); |
TestLocalThrows("if (true) {} else let x;", SyntaxError); |
TestLocalThrows("do let x; while (false)", SyntaxError); |
@@ -68,7 +71,32 @@ |
TestLocalThrows("switch (true) { case true: let x; }", SyntaxError); |
TestLocalThrows("switch (true) { default: let x; }", SyntaxError); |
-// Test var declarations statement positions. |
+// Test const declarations with initialisers in statement positions. |
+TestLocalThrows("if (true) const x = 1;", SyntaxError); |
+TestLocalThrows("if (true) {} else const x = 1;", SyntaxError); |
+TestLocalThrows("do const x = 1; while (false)", SyntaxError); |
+TestLocalThrows("while (false) const x = 1;", SyntaxError); |
+TestLocalThrows("label: const x = 1;", SyntaxError); |
+TestLocalThrows("for (;false;) const x = 1;", SyntaxError); |
+TestLocalThrows("switch (true) { case true: const x = 1; }", SyntaxError); |
+TestLocalThrows("switch (true) { default: const x = 1; }", SyntaxError); |
+ |
+// Test const declarations without initialisers. |
+TestLocalThrows("const x;", SyntaxError); |
+TestLocalThrows("const x = 1, y;", SyntaxError); |
+TestLocalThrows("const x, y = 1;", SyntaxError); |
+ |
+// Test const declarations without initialisers in statement positions. |
+TestLocalThrows("if (true) const x;", SyntaxError); |
+TestLocalThrows("if (true) {} else const x;", SyntaxError); |
+TestLocalThrows("do const x; while (false)", SyntaxError); |
+TestLocalThrows("while (false) const x;", SyntaxError); |
+TestLocalThrows("label: const x;", SyntaxError); |
+TestLocalThrows("for (;false;) const x;", SyntaxError); |
+TestLocalThrows("switch (true) { case true: const x; }", SyntaxError); |
+TestLocalThrows("switch (true) { default: const x; }", SyntaxError); |
+ |
+// Test var declarations in statement positions. |
TestLocalDoesNotThrow("if (true) var x;"); |
TestLocalDoesNotThrow("if (true) {} else var x;"); |
TestLocalDoesNotThrow("do var x; while (false)"); |
@@ -93,24 +121,15 @@ |
{ |
function g1() { } |
} |
- // Non-strict statement positions. |
- if (true) function g2() { } |
- if (true) {} else function g3() { } |
- do function g4() { } while (false) |
- while (false) function g5() { } |
- label: function g6() { } |
- for (;false;) function g7() { } |
- switch (true) { case true: function g8() { } } |
- switch (true) { default: function g9() { } } |
} |
f(); |
// Test function declarations in statement position in strict mode. |
-TestLocalThrows("function f() { 'use strict'; if (true) function g() {}", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; if (true) {} else function g() {}", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; do function g() {} while (false)", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; while (false) function g() {}", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; label: function g() {}", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; for (;false;) function g() {}", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; switch (true) { case true: function g() {} }", SyntaxError); |
-TestLocalThrows("function f() { 'use strict'; switch (true) { default: function g() {} }", SyntaxError); |
+TestLocalThrows("function f() { if (true) function g() {}", SyntaxError); |
+TestLocalThrows("function f() { if (true) {} else function g() {}", SyntaxError); |
+TestLocalThrows("function f() { do function g() {} while (false)", SyntaxError); |
+TestLocalThrows("function f() { while (false) function g() {}", SyntaxError); |
+TestLocalThrows("function f() { label: function g() {}", SyntaxError); |
+TestLocalThrows("function f() { for (;false;) function g() {}", SyntaxError); |
+TestLocalThrows("function f() { switch (true) { case true: function g() {} }", SyntaxError); |
+TestLocalThrows("function f() { switch (true) { default: function g() {} }", SyntaxError); |