Fix iterator closing in Promise all/race (#3759)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu
This commit is contained in:
@@ -553,7 +553,7 @@ ecma_builtin_promise_race_or_all (ecma_value_t this_arg, /**< 'this' argument */
|
|||||||
|
|
||||||
if (ECMA_IS_VALUE_ERROR (ret))
|
if (ECMA_IS_VALUE_ERROR (ret))
|
||||||
{
|
{
|
||||||
if (is_done)
|
if (!is_done)
|
||||||
{
|
{
|
||||||
ret = ecma_op_iterator_close (iterator);
|
ret = ecma_op_iterator_close (iterator);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,3 +74,8 @@ var rejects = Promise.all(createIterable([
|
|||||||
|
|
||||||
fulfills.then(result => { assert (result + "" === "foo,bar"); });
|
fulfills.then(result => { assert (result + "" === "foo,bar"); });
|
||||||
rejects.catch(result => { assert (result === "baz"); });
|
rejects.catch(result => { assert (result === "baz"); });
|
||||||
|
|
||||||
|
var closed = false;
|
||||||
|
delete Promise.resolve;
|
||||||
|
Promise.all(createIterable([1,2,3], {'return': function () { closed = true; }}));
|
||||||
|
assert (closed);
|
||||||
|
|||||||
@@ -62,3 +62,8 @@ var rejects = Promise.race(createIterable([
|
|||||||
|
|
||||||
fulfills.then(result => { assert (result + "" === "foo"); });
|
fulfills.then(result => { assert (result + "" === "foo"); });
|
||||||
rejects.catch(result => { assert (result === "baz"); });
|
rejects.catch(result => { assert (result === "baz"); });
|
||||||
|
|
||||||
|
var closed = false;
|
||||||
|
delete Promise.resolve;
|
||||||
|
Promise.race(createIterable([1,2,3], {'return': function () { closed = true; }}));
|
||||||
|
assert (closed);
|
||||||
|
|||||||
Reference in New Issue
Block a user