summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabrice Bellard <fabrice@bellard.org>2023-12-27 17:19:25 +0100
committerFabrice Bellard <fabrice@bellard.org>2023-12-27 17:19:25 +0100
commit5fc27dc7cf7a388e3f4ac7c9adb904c17a286333 (patch)
tree62b1b20938dfe5a246161f27749da099092f1ba9
parentfeefdb1742ed2de8ecd09fd66a848d1695294b3a (diff)
downloadquickjs-5fc27dc7cf7a388e3f4ac7c9adb904c17a286333.tar.gz
quickjs-5fc27dc7cf7a388e3f4ac7c9adb904c17a286333.zip
added Promise.withResolvers
-rw-r--r--TODO2
-rw-r--r--quickjs.c16
-rw-r--r--test262.conf2
3 files changed, 8 insertions, 12 deletions
diff --git a/TODO b/TODO
index a640d01..65372b8 100644
--- a/TODO
+++ b/TODO
@@ -63,5 +63,5 @@ Optimization ideas:
Test262o: 0/11262 errors, 463 excluded
Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
-Result: 16/76707 errors, 1497 excluded, 8237 skipped
+Result: 16/76719 errors, 1497 excluded, 8231 skipped
Test262 commit: 6cbb6da9473c56d95358d8e679c5a6d2b4574efb
diff --git a/quickjs.c b/quickjs.c
index 71a93f1..8e9750d 100644
--- a/quickjs.c
+++ b/quickjs.c
@@ -47662,17 +47662,14 @@ static JSValue js_promise_resolve(JSContext *ctx, JSValueConst this_val,
return result_promise;
}
-#if 0
-static JSValue js_promise___newPromiseCapability(JSContext *ctx,
- JSValueConst this_val,
- int argc, JSValueConst *argv)
+static JSValue js_promise_withResolvers(JSContext *ctx,
+ JSValueConst this_val,
+ int argc, JSValueConst *argv)
{
JSValue result_promise, resolving_funcs[2], obj;
- JSValueConst ctor;
- ctor = argv[0];
- if (!JS_IsObject(ctor))
+ if (!JS_IsObject(this_val))
return JS_ThrowTypeErrorNotAnObject(ctx);
- result_promise = js_new_promise_capability(ctx, resolving_funcs, ctor);
+ result_promise = js_new_promise_capability(ctx, resolving_funcs, this_val);
if (JS_IsException(result_promise))
return result_promise;
obj = JS_NewObject(ctx);
@@ -47687,7 +47684,6 @@ static JSValue js_promise___newPromiseCapability(JSContext *ctx,
JS_DefinePropertyValue(ctx, obj, JS_ATOM_reject, resolving_funcs[1], JS_PROP_C_W_E);
return obj;
}
-#endif
static __exception int remainingElementsCount_add(JSContext *ctx,
JSValueConst resolve_element_env,
@@ -48177,7 +48173,7 @@ static const JSCFunctionListEntry js_promise_funcs[] = {
JS_CFUNC_MAGIC_DEF("allSettled", 1, js_promise_all, PROMISE_MAGIC_allSettled ),
JS_CFUNC_MAGIC_DEF("any", 1, js_promise_all, PROMISE_MAGIC_any ),
JS_CFUNC_DEF("race", 1, js_promise_race ),
- //JS_CFUNC_DEF("__newPromiseCapability", 1, js_promise___newPromiseCapability ),
+ JS_CFUNC_DEF("withResolvers", 0, js_promise_withResolvers ),
JS_CGETSET_DEF("[Symbol.species]", js_get_this, NULL),
};
diff --git a/test262.conf b/test262.conf
index e3183bd..de8eca4 100644
--- a/test262.conf
+++ b/test262.conf
@@ -141,7 +141,7 @@ Object.is
optional-catch-binding
optional-chaining
Promise
-promise-with-resolvers=skip
+promise-with-resolvers
Promise.allSettled
Promise.any
Promise.prototype.finally