| Index: test/mjsunit/harmony/reflect-enumerate.js
|
| diff --git a/test/mjsunit/for-in.js b/test/mjsunit/harmony/reflect-enumerate.js
|
| similarity index 69%
|
| copy from test/mjsunit/for-in.js
|
| copy to test/mjsunit/harmony/reflect-enumerate.js
|
| index 644c27a63277b25729734afb061a286f38e1e801..bbc364e7b97282c40915bff094b1a7d9e5fb472c 100644
|
| --- a/test/mjsunit/for-in.js
|
| +++ b/test/mjsunit/harmony/reflect-enumerate.js
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2008 the V8 project authors. All rights reserved.
|
| +// Copyright 2008-2015 the V8 project authors. All rights reserved.
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| // met:
|
| @@ -25,9 +25,14 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +// This is adapted from mjsunit/for-in.js.
|
| +
|
| +// Flags: --harmony-reflect
|
| +
|
| +
|
| function props(x) {
|
| var array = [];
|
| - for (var p in x) array.push(p);
|
| + for (var p of Reflect.enumerate(x)) array.push(p);
|
| return array.sort();
|
| }
|
|
|
| @@ -65,60 +70,23 @@ assertEquals(2, props(a).length, "proplen2");
|
| a[1] = 0;
|
| assertEquals(3, props(a).length, "proplen3");
|
|
|
| -for (var hest = 'hest' in {}) { }
|
| -assertEquals('hest', hest, "empty-no-override");
|
| -
|
| var result = '';
|
| -for (var p in {a : [0], b : 1}) { result += p; }
|
| +for (var p of Reflect.enumerate({a : [0], b : 1})) { result += p; }
|
| assertEquals('ab', result, "ab");
|
|
|
| var result = '';
|
| -for (var p in {a : {v:1}, b : 1}) { result += p; }
|
| +for (var p of Reflect.enumerate({a : {v:1}, b : 1})) { result += p; }
|
| assertEquals('ab', result, "ab-nodeep");
|
|
|
| var result = '';
|
| -for (var p in { get a() {}, b : 1}) { result += p; }
|
| +for (var p of Reflect.enumerate({ get a() {}, b : 1})) { result += p; }
|
| assertEquals('ab', result, "abget");
|
|
|
| var result = '';
|
| -for (var p in { get a() {}, set a(x) {}, b : 1}) { result += p; }
|
| -assertEquals('ab', result, "abgetset");
|
| -
|
| -
|
| -// Test that for-in in the global scope works with a keyed property as "each".
|
| -// Test outside a loop and in a loop for multiple iterations.
|
| -a = [1,2,3,4];
|
| -x = {foo:5, bar:6, zip:7, glep:9, 10:11};
|
| -delete x.bar;
|
| -y = {}
|
| -
|
| -for (a[2] in x) {
|
| - y[a[2]] = x[a[2]];
|
| -}
|
| -
|
| -assertEquals(5, y.foo, "y.foo");
|
| -assertEquals("undefined", typeof y.bar, "y.bar");
|
| -assertEquals(7, y.zip, "y.zip");
|
| -assertEquals(9, y.glep, "y.glep");
|
| -assertEquals(11, y[10], "y[10]");
|
| -assertEquals("undefined", typeof y[2], "y[2]");
|
| -assertEquals("undefined", typeof y[0], "y[0]");
|
| -
|
| -for (i=0 ; i < 3; ++i) {
|
| - y = {}
|
| -
|
| - for (a[2] in x) {
|
| - y[a[2]] = x[a[2]];
|
| - }
|
| -
|
| - assertEquals(5, y.foo, "y.foo");
|
| - assertEquals("undefined", typeof y.bar, "y.bar");
|
| - assertEquals(7, y.zip, "y.zip");
|
| - assertEquals(9, y.glep, "y.glep");
|
| - assertEquals(11, y[10], "y[10]");
|
| - assertEquals("undefined", typeof y[2], "y[2]");
|
| - assertEquals("undefined", typeof y[0], "y[0]");
|
| +for (var p of Reflect.enumerate({ get a() {}, set a(x) {}, b : 1})) {
|
| + result += p;
|
| }
|
| +assertEquals('ab', result, "abgetset");
|
|
|
| (function() {
|
| var large_key = 2147483650;
|
| @@ -126,7 +94,7 @@ for (i=0 ; i < 3; ++i) {
|
| o[large_key] = 1;
|
| o.__proto__[large_key] = 1;
|
| var keys = [];
|
| - for (var k in o) {
|
| + for (var k of Reflect.enumerate(o)) {
|
| keys.push(k);
|
| }
|
| assertEquals(["2147483650"], keys);
|
|
|