Index: test/mjsunit/regress/regress-2506.js |
diff --git a/test/mjsunit/regress/regress-2506.js b/test/mjsunit/regress/regress-2506.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e6b37d3fdbb1305d81aa6e06c1970322f8745a54 |
--- /dev/null |
+++ b/test/mjsunit/regress/regress-2506.js |
@@ -0,0 +1,78 @@ |
+// Copyright 2014 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// Flags: --harmony-scoping |
+ |
+'use strict'; |
+ |
+// Top-level code |
+let s = 0; |
+let f = [undefined, undefined, undefined] |
+for (const x of [1,2,3]) { |
+ s += x; |
+ f[x-1] = function() { return x; } |
+} |
+assertEquals(6, s); |
+assertEquals(1, f[0]()); |
+assertEquals(2, f[1]()); |
+assertEquals(3, f[2]()); |
+ |
+let x = 1; |
+s = 0; |
+for (const x of [x, x+1, x+2]) { |
+ s += x; |
+} |
+assertEquals(6, s); |
+ |
+s = 0; |
+var q = 1; |
+for (const q of [q, q+1, q+2]) { |
+ s += q; |
+} |
+assertEquals(6, s); |
+ |
+let z = 1; |
+s = 0; |
+for (const x = 1; z < 2; z++) { |
+ s += x + z; |
+} |
+assertEquals(2, s); |
+ |
+ |
+s = ""; |
+for (const x in [1,2,3]) { |
+ s += x; |
+} |
+assertEquals("012", s); |
+ |
+assertThrows(function() { for(const x in [1,2,3]) { x++ } }, SyntaxError); |
+ |
+// Function scope |
+(function() { |
+ let s = 0; |
+ for (const x of [1,2,3]) { |
+ s += x; |
+ } |
+ assertEquals(6, s); |
+ |
+ let x = 1; |
+ s = 0; |
+ for (const x of [x, x+1, x+2]) { |
+ s += x; |
+ } |
+ assertEquals(6, s); |
+ |
+ s = 0; |
+ var q = 1; |
+ for (const q of [q, q+1, q+2]) { |
+ s += q; |
+ } |
+ assertEquals(6, s); |
+ |
+ s = ""; |
+ for (const x in [1,2,3]) { |
+ s += x; |
+ } |
+ assertEquals("012", s); |
+}()); |