| Index: src/collection.js
|
| diff --git a/src/collection.js b/src/collection.js
|
| index 8d2d18428602b85979ff98afde6f60ea2c30ff92..c8cf639f97d96c3396f463a97ad5181ac4ccc347 100644
|
| --- a/src/collection.js
|
| +++ b/src/collection.js
|
| @@ -20,26 +20,17 @@ function SetConstructor(iterable) {
|
| throw MakeTypeError('constructor_not_function', ['Set']);
|
| }
|
|
|
| - var iter, adder;
|
| + %_SetInitialize(this);
|
|
|
| if (!IS_NULL_OR_UNDEFINED(iterable)) {
|
| - adder = this.add;
|
| + var adder = this.add;
|
| if (!IS_SPEC_FUNCTION(adder)) {
|
| throw MakeTypeError('property_not_function', ['add', this]);
|
| }
|
| - iter = GetIterator(iterable);
|
| - }
|
| -
|
| - %_SetInitialize(this);
|
| -
|
| - if (IS_UNDEFINED(iter)) return;
|
|
|
| - var next, done;
|
| - while (!(next = iter.next()).done) {
|
| - if (!IS_SPEC_OBJECT(next)) {
|
| - throw MakeTypeError('iterator_result_not_an_object', [next]);
|
| + for (var value of iterable) {
|
| + %_CallFunction(this, value, adder);
|
| }
|
| - %_CallFunction(this, next.value, adder);
|
| }
|
| }
|
|
|
| @@ -160,30 +151,20 @@ function MapConstructor(iterable) {
|
| throw MakeTypeError('constructor_not_function', ['Map']);
|
| }
|
|
|
| - var iter, adder;
|
| + %_MapInitialize(this);
|
|
|
| if (!IS_NULL_OR_UNDEFINED(iterable)) {
|
| - adder = this.set;
|
| + var adder = this.set;
|
| if (!IS_SPEC_FUNCTION(adder)) {
|
| throw MakeTypeError('property_not_function', ['set', this]);
|
| }
|
| - iter = GetIterator(iterable);
|
| - }
|
| -
|
| - %_MapInitialize(this);
|
|
|
| - if (IS_UNDEFINED(iter)) return;
|
| -
|
| - var next, done, nextItem;
|
| - while (!(next = iter.next()).done) {
|
| - if (!IS_SPEC_OBJECT(next)) {
|
| - throw MakeTypeError('iterator_result_not_an_object', [next]);
|
| - }
|
| - nextItem = next.value;
|
| - if (!IS_SPEC_OBJECT(nextItem)) {
|
| - throw MakeTypeError('iterator_value_not_an_object', [nextItem]);
|
| + for (var nextItem of iterable) {
|
| + if (!IS_SPEC_OBJECT(nextItem)) {
|
| + throw MakeTypeError('iterator_value_not_an_object', [nextItem]);
|
| + }
|
| + %_CallFunction(this, nextItem[0], nextItem[1], adder);
|
| }
|
| - %_CallFunction(this, nextItem[0], nextItem[1], adder);
|
| }
|
| }
|
|
|
|
|