Index: src/weak-collection.js |
diff --git a/src/weak-collection.js b/src/weak-collection.js |
index 33e3d4c69758c8c052822c98f5d0890ee7be9e81..6266fb879e08fd69cdbf2329708ad8a401734427 100644 |
--- a/src/weak-collection.js |
+++ b/src/weak-collection.js |
@@ -20,30 +20,19 @@ function WeakMapConstructor(iterable) { |
throw MakeTypeError('constructor_not_function', ['WeakMap']); |
} |
- var iter, adder; |
+ %WeakCollectionInitialize(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); |
- } |
- |
- %WeakCollectionInitialize(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); |
} |
} |
@@ -127,26 +116,16 @@ function WeakSetConstructor(iterable) { |
throw MakeTypeError('constructor_not_function', ['WeakSet']); |
} |
- var iter, adder; |
+ %WeakCollectionInitialize(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); |
- } |
- |
- %WeakCollectionInitialize(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); |
} |
} |