fixed run_test262_harness_test() with modules

This commit is contained in:
Fabrice Bellard 2024-01-06 14:43:47 +01:00
parent df3781d082
commit 3c2cfabfc7

View File

@ -1854,17 +1854,32 @@ int run_test262_harness_test(const char *filename, BOOL is_module)
js_std_dump_error(ctx); js_std_dump_error(ctx);
ret_code = 1; ret_code = 1;
} else { } else {
JS_FreeValue(ctx, res_val); JSValue promise = JS_UNDEFINED;
if (is_module) {
promise = res_val;
} else {
JS_FreeValue(ctx, res_val);
}
for(;;) { for(;;) {
JSContext *ctx1; JSContext *ctx1;
ret = JS_ExecutePendingJob(JS_GetRuntime(ctx), &ctx1); ret = JS_ExecutePendingJob(JS_GetRuntime(ctx), &ctx1);
if (ret < 0) { if (ret < 0) {
js_std_dump_error(ctx1); js_std_dump_error(ctx1);
ret_code = 1; ret_code = 1;
} else if (ret == 0) { } else if (ret == 0) {
break; break;
} }
} }
/* dump the error if the module returned an error. */
if (is_module) {
JSPromiseStateEnum state = JS_PromiseState(ctx, promise);
if (state == JS_PROMISE_REJECTED) {
JS_Throw(ctx, JS_PromiseResult(ctx, promise));
js_std_dump_error(ctx);
ret_code = 1;
}
}
JS_FreeValue(ctx, promise);
} }
free(buf); free(buf);
#ifdef CONFIG_AGENT #ifdef CONFIG_AGENT