Commit 0a35d53f authored by arv@chromium.org's avatar arv@chromium.org

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
parent f95b81a6
......@@ -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]);
......
......@@ -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]);
......
......@@ -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);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment