summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/es6/regress/regress-2506.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/es6/regress/regress-2506.js')
-rw-r--r--deps/v8/test/mjsunit/es6/regress/regress-2506.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/es6/regress/regress-2506.js b/deps/v8/test/mjsunit/es6/regress/regress-2506.js
new file mode 100644
index 0000000000..b5cc91dbd7
--- /dev/null
+++ b/deps/v8/test/mjsunit/es6/regress/regress-2506.js
@@ -0,0 +1,76 @@
+// 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.
+
+'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("'use strict'; for (const x in [1,2,3]) { x++ }", TypeError);
+
+// 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);
+}());