Index: test/mjsunit/harmony/block-scoping.js |
diff --git a/test/mjsunit/harmony/block-scoping.js b/test/mjsunit/harmony/block-scoping.js |
index c70b3b6ea80a8af9eea86f944f33c1623e5ab135..0d0526afab28e394bfcddc979c8ba4f80fcfeb2b 100644 |
--- a/test/mjsunit/harmony/block-scoping.js |
+++ b/test/mjsunit/harmony/block-scoping.js |
@@ -44,12 +44,16 @@ f1(); |
function f2(one) { |
var x = one + 1; |
let y = one + 2; |
+ const u = one + 4; |
{ |
let z = one + 3; |
+ const v = one + 5; |
assertEquals(1, eval('one')); |
assertEquals(2, eval('x')); |
assertEquals(3, eval('y')); |
assertEquals(4, eval('z')); |
+ assertEquals(5, eval('u')); |
+ assertEquals(6, eval('v')); |
} |
} |
f2(1); |
@@ -59,12 +63,17 @@ f2(1); |
function f3(one) { |
var x = one + 1; |
let y = one + 2; |
+ const u = one + 4; |
{ |
let z = one + 3; |
+ const v = one + 5; |
assertEquals(1, one); |
assertEquals(2, x); |
assertEquals(3, y); |
assertEquals(4, z); |
+ assertEquals(5, u); |
+ assertEquals(6, v); |
+ |
} |
} |
f3(1); |
@@ -74,13 +83,17 @@ f3(1); |
function f4(one) { |
var x = one + 1; |
let y = one + 2; |
+ const u = one + 4; |
{ |
let z = one + 3; |
+ const v = one + 5; |
function f() { |
assertEquals(1, eval('one')); |
assertEquals(2, eval('x')); |
assertEquals(3, eval('y')); |
assertEquals(4, eval('z')); |
+ assertEquals(5, eval('u')); |
+ assertEquals(6, eval('v')); |
}; |
} |
} |
@@ -91,13 +104,17 @@ f4(1); |
function f5(one) { |
var x = one + 1; |
let y = one + 2; |
+ const u = one + 4; |
{ |
let z = one + 3; |
+ const v = one + 5; |
function f() { |
assertEquals(1, one); |
assertEquals(2, x); |
assertEquals(3, y); |
assertEquals(4, z); |
+ assertEquals(5, u); |
+ assertEquals(6, v); |
}; |
} |
} |
@@ -107,8 +124,10 @@ f5(1); |
// Return from block. |
function f6() { |
let x = 1; |
+ const u = 3; |
{ |
let y = 2; |
+ const v = 4; |
return x + y; |
} |
} |
@@ -120,13 +139,26 @@ function f7(a) { |
let b = 1; |
var c = 1; |
var d = 1; |
- { // let variables shadowing argument, let and var variables |
+ const e = 1; |
+ { // let variables shadowing argument, let, const and var variables |
let a = 2; |
let b = 2; |
let c = 2; |
+ let e = 2; |
+ assertEquals(2,a); |
+ assertEquals(2,b); |
+ assertEquals(2,c); |
+ assertEquals(2,e); |
+ } |
+ { // const variables shadowing argument, let, const and var variables |
+ const a = 2; |
+ const b = 2; |
+ const c = 2; |
+ const e = 2; |
assertEquals(2,a); |
assertEquals(2,b); |
assertEquals(2,c); |
+ assertEquals(2,e); |
} |
try { |
throw 'stuff1'; |
@@ -156,6 +188,12 @@ function f7(a) { |
} catch (c) { |
// catch variable shadowing var variable |
assertEquals('stuff3',c); |
+ { |
+ // const variable shadowing catch variable |
+ const c = 3; |
+ assertEquals(3,c); |
+ } |
+ assertEquals('stuff3',c); |
try { |
throw 'stuff4'; |
} catch(c) { |
@@ -178,14 +216,16 @@ function f7(a) { |
c = 2; |
} |
assertEquals(1,c); |
- (function(a,b,c) { |
- // arguments shadowing argument, let and var variable |
+ (function(a,b,c,e) { |
+ // arguments shadowing argument, let, const and var variable |
a = 2; |
b = 2; |
c = 2; |
+ e = 2; |
assertEquals(2,a); |
assertEquals(2,b); |
assertEquals(2,c); |
+ assertEquals(2,e); |
// var variable shadowing var variable |
var d = 2; |
})(1,1); |
@@ -193,24 +233,30 @@ function f7(a) { |
assertEquals(1,b); |
assertEquals(1,c); |
assertEquals(1,d); |
+ assertEquals(1,e); |
} |
f7(1); |
-// Ensure let variables are block local and var variables function local. |
+// Ensure let and const variables are block local |
+// and var variables function local. |
function f8() { |
var let_accessors = []; |
var var_accessors = []; |
+ var const_accessors = []; |
for (var i = 0; i < 10; i++) { |
let x = i; |
var y = i; |
+ const z = i; |
let_accessors[i] = function() { return x; } |
var_accessors[i] = function() { return y; } |
+ const_accessors[i] = function() { return z; } |
} |
for (var j = 0; j < 10; j++) { |
y = j + 10; |
assertEquals(j, let_accessors[j]()); |
assertEquals(y, var_accessors[j]()); |
+ assertEquals(j, const_accessors[j]()); |
} |
} |
f8(); |