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:
parent
f95b81a6ef
commit
0a35d53f7d
@ -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]);
|
||||||
|
@ -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]);
|
||||||
|
@ -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);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user