diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/regress/regress-2506.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/regress/regress-2506.js | 76 |
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); +}()); |