summaryrefslogtreecommitdiffstats
path: root/js/src/builtin/WeakSet.js
diff options
context:
space:
mode:
authorjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-03-24 12:15:02 +0100
committerjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-03-24 12:15:02 +0100
commit4b487efb58bfba4c3f67d898e86b9f6daaab59b2 (patch)
treeedfe3d4039917175b4c0966de99b2979e3e067e1 /js/src/builtin/WeakSet.js
parent2d2a60cdae0fb5ac13eb544e54495f54ac886c6c (diff)
downloadUXP-4b487efb58bfba4c3f67d898e86b9f6daaab59b2.tar
UXP-4b487efb58bfba4c3f67d898e86b9f6daaab59b2.tar.gz
UXP-4b487efb58bfba4c3f67d898e86b9f6daaab59b2.tar.lz
UXP-4b487efb58bfba4c3f67d898e86b9f6daaab59b2.tar.xz
UXP-4b487efb58bfba4c3f67d898e86b9f6daaab59b2.zip
Bug 1147371: Convert self-hosted code that need to call IteratorClose to use for-of
Issue #74
Diffstat (limited to 'js/src/builtin/WeakSet.js')
-rw-r--r--js/src/builtin/WeakSet.js36
1 files changed, 3 insertions, 33 deletions
diff --git a/js/src/builtin/WeakSet.js b/js/src/builtin/WeakSet.js
index 8589f9dc6..b16b4634d 100644
--- a/js/src/builtin/WeakSet.js
+++ b/js/src/builtin/WeakSet.js
@@ -14,39 +14,9 @@ function WeakSetConstructorInit(iterable) {
if (!IsCallable(adder))
ThrowTypeError(JSMSG_NOT_FUNCTION, typeof adder);
- // Step 6.c.
- var iterFn = iterable[std_iterator];
- if (!IsCallable(iterFn))
- ThrowTypeError(JSMSG_NOT_ITERABLE, DecompileArg(0, iterable));
-
- var iter = callContentFunction(iterFn, iterable);
- if (!IsObject(iter))
- ThrowTypeError(JSMSG_NOT_NONNULL_OBJECT, typeof iter);
-
- // Step 7 (not applicable).
-
- // Step 8.
- while (true) {
- // Step 8.a.
- var next = callContentFunction(iter.next, iter);
- if (!IsObject(next))
- ThrowTypeError(JSMSG_NOT_NONNULL_OBJECT, typeof next);
-
- // Step 8.b.
- if (next.done)
- return;
-
- // Step 8.c.
- var nextValue = next.value;
-
- // Steps 8.d-e.
- try {
- callContentFunction(adder, set, nextValue);
- } catch (e) {
- IteratorCloseThrow(iter);
- throw e;
- }
- }
+ // Steps 6.c-8.
+ for (var nextValue of allowContentIter(iterable))
+ callContentFunction(adder, set, nextValue);
}
// 23.4.3.1