From: Fabrice Bellard Date: Tue, 29 Sep 2026 08:30:40 +0000 (+0200) Subject: spec update for Promise.try X-Git-Url: https://git.kaiwu.me/?a=commitdiff_plain;h=8e68fcfcf5b62285359e056003993c8a6dc80491;p=quickjs.git spec update for Promise.try --- diff --git a/quickjs.c b/quickjs.c index 0e8916e..e30f031 100644 --- a/quickjs.c +++ b/quickjs.c @@ -53999,28 +53999,20 @@ exception: static JSValue js_promise_try(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { - JSValue result_promise, resolving_funcs[2], ret, ret2; - BOOL is_reject = 0; - + JSValue result_promise, ret; + int is_reject; + if (!JS_IsObject(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx); - result_promise = js_new_promise_capability(ctx, resolving_funcs, this_val); - if (JS_IsException(result_promise)) - return result_promise; ret = JS_Call(ctx, argv[0], JS_UNDEFINED, argc - 1, argv + 1); if (JS_IsException(ret)) { is_reject = 1; ret = JS_GetException(ctx); + } else { + is_reject = 0; } - ret2 = JS_Call(ctx, resolving_funcs[is_reject], JS_UNDEFINED, 1, (JSValueConst *)&ret); - JS_FreeValue(ctx, resolving_funcs[0]); - JS_FreeValue(ctx, resolving_funcs[1]); + result_promise = js_promise_resolve(ctx, this_val, 1, (JSValueConst *)&ret, is_reject); JS_FreeValue(ctx, ret); - if (JS_IsException(ret2)) { - JS_FreeValue(ctx, result_promise); - return ret2; - } - JS_FreeValue(ctx, ret2); return result_promise; } diff --git a/test262_errors.txt b/test262_errors.txt index ffdf6d6..528740a 100644 --- a/test262_errors.txt +++ b/test262_errors.txt @@ -1,5 +1,3 @@ -test262/test/built-ins/Promise/try/avoids-wrap-for-subclass.js:10: Test262Error: Expected SameValue(«[object Promise]», «[object Promise]») to be true -test262/test/built-ins/Promise/try/avoids-wrap.js:10: Test262Error: Expected SameValue(«[object Promise]», «[object Promise]») to be true test262/test/language/expressions/assignment/S11.13.1_A6_T1.js:23: Test262Error: #1: innerX === undefined. Actual: 1 test262/test/language/expressions/assignment/S11.13.1_A6_T2.js:23: Test262Error: #1: innerX === 2. Actual: 1 test262/test/language/expressions/compound-assignment/S11.13.2_A6.1_T1.js:24: Test262Error: #1: innerX === 2. Actual: 12