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
This commit is contained in:
arv@chromium.org 2014-08-12 21:42:27 +00:00
parent f95b81a6ef
commit 0a35d53f7d
3 changed files with 4 additions and 67 deletions

View File

@ -23,7 +23,7 @@ function SetConstructor(iterable) {
var iter, adder; var iter, adder;
if (!IS_NULL_OR_UNDEFINED(iterable)) { if (!IS_NULL_OR_UNDEFINED(iterable)) {
iter = GetIterator(ToObject(iterable)); iter = GetIterator(iterable);
adder = this.add; adder = this.add;
if (!IS_SPEC_FUNCTION(adder)) { if (!IS_SPEC_FUNCTION(adder)) {
throw MakeTypeError('property_not_function', ['add', this]); throw MakeTypeError('property_not_function', ['add', this]);
@ -147,7 +147,7 @@ function MapConstructor(iterable) {
var iter, adder; var iter, adder;
if (!IS_NULL_OR_UNDEFINED(iterable)) { if (!IS_NULL_OR_UNDEFINED(iterable)) {
iter = GetIterator(ToObject(iterable)); iter = GetIterator(iterable);
adder = this.set; adder = this.set;
if (!IS_SPEC_FUNCTION(adder)) { if (!IS_SPEC_FUNCTION(adder)) {
throw MakeTypeError('property_not_function', ['set', this]); throw MakeTypeError('property_not_function', ['set', this]);

View File

@ -23,7 +23,7 @@ function WeakMapConstructor(iterable) {
var iter, adder; var iter, adder;
if (!IS_NULL_OR_UNDEFINED(iterable)) { if (!IS_NULL_OR_UNDEFINED(iterable)) {
iter = GetIterator(ToObject(iterable)); iter = GetIterator(iterable);
adder = this.set; adder = this.set;
if (!IS_SPEC_FUNCTION(adder)) { if (!IS_SPEC_FUNCTION(adder)) {
throw MakeTypeError('property_not_function', ['set', this]); throw MakeTypeError('property_not_function', ['set', this]);
@ -139,7 +139,7 @@ function WeakSetConstructor(iterable) {
var iter, adder; var iter, adder;
if (!IS_NULL_OR_UNDEFINED(iterable)) { if (!IS_NULL_OR_UNDEFINED(iterable)) {
iter = GetIterator(ToObject(iterable)); iter = GetIterator(iterable);
adder = this.add; adder = this.add;
if (!IS_SPEC_FUNCTION(adder)) { if (!IS_SPEC_FUNCTION(adder)) {
throw MakeTypeError('property_not_function', ['add', this]); throw MakeTypeError('property_not_function', ['add', this]);

View File

@ -1015,9 +1015,6 @@ function TestSetConstructor(ctor) {
assertThrows(function() { assertThrows(function() {
new ctor({}); new ctor({});
}, TypeError); }, TypeError);
assertThrows(function() {
new ctor(true);
}, TypeError);
// @@iterator not callable // @@iterator not callable
assertThrows(function() { 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) { function TestMapConstructor(ctor) {
var m = new ctor(null); var m = new ctor(null);
assertSize(0, m); assertSize(0, m);
@ -1195,9 +1159,6 @@ function TestMapConstructor(ctor) {
assertThrows(function() { assertThrows(function() {
new ctor({}); new ctor({});
}, TypeError); }, TypeError);
assertThrows(function() {
new ctor(true);
}, TypeError);
// @@iterator not callable // @@iterator not callable
assertThrows(function() { assertThrows(function() {
@ -1339,27 +1300,3 @@ TestMapConstructorIteratorNotObjectValues(WeakMap);
new WeakMap([[1, 2]]) new WeakMap([[1, 2]])
}, TypeError); }, 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);