diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-24 12:15:02 +0100 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-24 12:15:02 +0100 |
commit | 4b487efb58bfba4c3f67d898e86b9f6daaab59b2 (patch) | |
tree | edfe3d4039917175b4c0966de99b2979e3e067e1 /js/src/builtin/WeakMap.js | |
parent | 2d2a60cdae0fb5ac13eb544e54495f54ac886c6c (diff) | |
download | UXP-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/WeakMap.js')
-rw-r--r-- | js/src/builtin/WeakMap.js | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/js/src/builtin/WeakMap.js b/js/src/builtin/WeakMap.js index 708be8424..6755b7a7b 100644 --- a/js/src/builtin/WeakMap.js +++ b/js/src/builtin/WeakMap.js @@ -14,43 +14,13 @@ function WeakMapConstructorInit(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 nextItem = next.value; - + // Steps 6.c-8. + for (var nextItem of allowContentIter(iterable)) { // Step 8.d. - if (!IsObject(nextItem)) { - IteratorCloseThrow(iter); + if (!IsObject(nextItem)) ThrowTypeError(JSMSG_INVALID_MAP_ITERABLE, "WeakMap"); - } // Steps 8.e-j. - try { - callContentFunction(adder, map, nextItem[0], nextItem[1]); - } catch (e) { - IteratorCloseThrow(iter); - throw e; - } + callContentFunction(adder, map, nextItem[0], nextItem[1]); } } |