mirror of
https://github.com/bellard/quickjs.git
synced 2024-11-22 13:48:11 +08:00
Fix AsyncGenerator.prototype.return error handling (bnoordhuis)
This commit is contained in:
parent
a610598df6
commit
a42681a4a3
17
quickjs.c
17
quickjs.c
@ -19175,10 +19175,19 @@ static int js_async_generator_completed_return(JSContext *ctx,
|
|||||||
JSValue promise, resolving_funcs[2], resolving_funcs1[2];
|
JSValue promise, resolving_funcs[2], resolving_funcs1[2];
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
promise = js_promise_resolve(ctx, ctx->promise_ctor,
|
// Can fail looking up JS_ATOM_constructor when is_reject==0.
|
||||||
1, (JSValueConst *)&value, 0);
|
promise = js_promise_resolve(ctx, ctx->promise_ctor, 1, &value,
|
||||||
if (JS_IsException(promise))
|
/*is_reject*/0);
|
||||||
return -1;
|
// A poisoned .constructor property is observable and the resulting
|
||||||
|
// exception should be delivered to the catch handler.
|
||||||
|
if (JS_IsException(promise)) {
|
||||||
|
JSValue err = JS_GetException(ctx);
|
||||||
|
promise = js_promise_resolve(ctx, ctx->promise_ctor, 1, &err,
|
||||||
|
/*is_reject*/1);
|
||||||
|
JS_FreeValue(ctx, err);
|
||||||
|
if (JS_IsException(promise))
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if (js_async_generator_resolve_function_create(ctx,
|
if (js_async_generator_resolve_function_create(ctx,
|
||||||
JS_MKPTR(JS_TAG_OBJECT, s->generator),
|
JS_MKPTR(JS_TAG_OBJECT, s->generator),
|
||||||
resolving_funcs1,
|
resolving_funcs1,
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
test262/test/annexB/language/eval-code/direct/script-decl-lex-collision-in-sloppy-mode.js:13: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
|
test262/test/annexB/language/eval-code/direct/script-decl-lex-collision-in-sloppy-mode.js:13: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
|
||||||
test262/test/built-ins/AsyncGeneratorPrototype/return/return-state-completed-broken-promise.js:53: TypeError: $DONE() not called
|
|
||||||
test262/test/built-ins/AsyncGeneratorPrototype/return/return-state-completed-broken-promise.js:53: strict mode: TypeError: $DONE() not called
|
|
||||||
test262/test/built-ins/AsyncGeneratorPrototype/return/return-suspendedStart-broken-promise.js:34: TypeError: $DONE() not called
|
|
||||||
test262/test/built-ins/AsyncGeneratorPrototype/return/return-suspendedStart-broken-promise.js:34: strict mode: TypeError: $DONE() not called
|
|
||||||
test262/test/built-ins/AsyncGeneratorPrototype/return/return-suspendedYield-broken-promise-try-catch.js:39: TypeError: $DONE() not called
|
test262/test/built-ins/AsyncGeneratorPrototype/return/return-suspendedYield-broken-promise-try-catch.js:39: TypeError: $DONE() not called
|
||||||
test262/test/built-ins/AsyncGeneratorPrototype/return/return-suspendedYield-broken-promise-try-catch.js:39: strict mode: TypeError: $DONE() not called
|
test262/test/built-ins/AsyncGeneratorPrototype/return/return-suspendedYield-broken-promise-try-catch.js:39: strict mode: TypeError: $DONE() not called
|
||||||
test262/test/built-ins/Function/internals/Construct/derived-this-uninitialized-realm.js:20: Test262Error: Expected a ReferenceError but got a different error constructor with the same name
|
test262/test/built-ins/Function/internals/Construct/derived-this-uninitialized-realm.js:20: Test262Error: Expected a ReferenceError but got a different error constructor with the same name
|
||||||
|
Loading…
Reference in New Issue
Block a user