From 0a35d53f7d66f4353616da82ab46c78d4c71c55d Mon Sep 17 00:00:00 2001 From: "arv@chromium.org" Date: Tue, 12 Aug 2014 21:42:27 +0000 Subject: [PATCH] Revert "ES6: Make Map/Set constructors support iterable values" Reason for revert: TestSetConstructorIterableValue(WeakSet) fails on x64.debug TBR=adamk@chromium.org,dslomov@chromium.org LOG=Y BUG= Review URL: https://codereview.chromium.org/461193002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/collection.js | 4 +-- src/weak_collection.js | 4 +-- test/mjsunit/es6/collections.js | 63 ----------------------------------------- 3 files changed, 4 insertions(+), 67 deletions(-) diff --git a/src/collection.js b/src/collection.js index 20887dd..5e4421e 100644 --- a/src/collection.js +++ b/src/collection.js @@ -23,7 +23,7 @@ function SetConstructor(iterable) { var iter, adder; if (!IS_NULL_OR_UNDEFINED(iterable)) { - iter = GetIterator(ToObject(iterable)); + iter = GetIterator(iterable); adder = this.add; if (!IS_SPEC_FUNCTION(adder)) { throw MakeTypeError('property_not_function', ['add', this]); @@ -147,7 +147,7 @@ function MapConstructor(iterable) { var iter, adder; if (!IS_NULL_OR_UNDEFINED(iterable)) { - iter = GetIterator(ToObject(iterable)); + iter = GetIterator(iterable); adder = this.set; if (!IS_SPEC_FUNCTION(adder)) { throw MakeTypeError('property_not_function', ['set', this]); diff --git a/src/weak_collection.js b/src/weak_collection.js index 1160176..73dd9de 100644 --- a/src/weak_collection.js +++ b/src/weak_collection.js @@ -23,7 +23,7 @@ function WeakMapConstructor(iterable) { var iter, adder; if (!IS_NULL_OR_UNDEFINED(iterable)) { - iter = GetIterator(ToObject(iterable)); + iter = GetIterator(iterable); adder = this.set; if (!IS_SPEC_FUNCTION(adder)) { throw MakeTypeError('property_not_function', ['set', this]); @@ -139,7 +139,7 @@ function WeakSetConstructor(iterable) { var iter, adder; if (!IS_NULL_OR_UNDEFINED(iterable)) { - iter = GetIterator(ToObject(iterable)); + iter = GetIterator(iterable); adder = this.add; if (!IS_SPEC_FUNCTION(adder)) { throw MakeTypeError('property_not_function', ['add', this]); diff --git a/test/mjsunit/es6/collections.js b/test/mjsunit/es6/collections.js index 911b748..c585719 100644 --- a/test/mjsunit/es6/collections.js +++ b/test/mjsunit/es6/collections.js @@ -1015,9 +1015,6 @@ function TestSetConstructor(ctor) { assertThrows(function() { new ctor({}); }, TypeError); - assertThrows(function() { - new ctor(true); - }, TypeError); // @@iterator not callable assertThrows(function() { @@ -1151,39 +1148,6 @@ TestSetConstructorNextNotAnObject(WeakSet); })(); -function TestSetConstructorIterableValue(ctor) { - 'use strict'; - // Strict mode is required to prevent implicit wrapping in the getter. - Object.defineProperty(Number.prototype, Symbol.iterator, { - get: function() { - assertEquals('object', typeof this); - return function() { - return oneAndTwo.keys(); - }; - }, - configurable: true - }); - - var set = new ctor(42); - assertSize(2, set); - assertTrue(set.has(k1)); - assertTrue(set.has(k2)); - - delete Number.prototype[Symbol.iterator]; -} -TestSetConstructorIterableValue(Set); -TestSetConstructorIterableValue(WeakSet); - - -(function TestSetConstructorStringValue() { - var s = new Set('abc'); - assertSize(3, s); - assertTrue(s.has('a')); - assertTrue(s.has('b')); - assertTrue(s.has('c')); -})(); - - function TestMapConstructor(ctor) { var m = new ctor(null); assertSize(0, m); @@ -1195,9 +1159,6 @@ function TestMapConstructor(ctor) { assertThrows(function() { new ctor({}); }, TypeError); - assertThrows(function() { - new ctor(true); - }, TypeError); // @@iterator not callable assertThrows(function() { @@ -1339,27 +1300,3 @@ TestMapConstructorIteratorNotObjectValues(WeakMap); new WeakMap([[1, 2]]) }, TypeError); })(); - - -function TestMapConstructorIterableValue(ctor) { - 'use strict'; - // Strict mode is required to prevent implicit wrapping in the getter. - Object.defineProperty(Number.prototype, Symbol.iterator, { - get: function() { - assertEquals('object', typeof this); - return function() { - return oneAndTwo.entries(); - }; - }, - configurable: true - }); - - var map = new ctor(42); - assertSize(2, map); - assertEquals(1, map.get(k1)); - assertEquals(2, map.get(k2)); - - delete Number.prototype[Symbol.iterator]; -} -TestMapConstructorIterableValue(Map); -TestMapConstructorIterableValue(WeakMap); -- 2.7.4