From e9df2ca81401f73af25d95e8f6c3205296a7a09c Mon Sep 17 00:00:00 2001 From: kisbg Date: Thu, 4 Feb 2021 14:30:11 +0100 Subject: [PATCH] Add newtarget support AsyncFunction (#4560) JerryScript-DCO-1.0-Signed-off-by: bence gabor kis kisbg@inf.u-szeged.hu --- .../ecma/operations/ecma-function-object.c | 24 +++++++++---------- tests/test262-esnext-excludelist.xml | 2 -- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/jerry-core/ecma/operations/ecma-function-object.c b/jerry-core/ecma/operations/ecma-function-object.c index a5888f0af..0e61cbc5b 100644 --- a/jerry-core/ecma/operations/ecma-function-object.c +++ b/jerry-core/ecma/operations/ecma-function-object.c @@ -492,28 +492,28 @@ ecma_op_create_dynamic_function (const ecma_value_t *arguments_list_p, /**< argu #if ENABLED (JERRY_ESNEXT) ecma_object_t *new_target_p = JERRY_CONTEXT (current_new_target_p); + ecma_builtin_id_t fallback_ctor = ECMA_BUILTIN_ID_FUNCTION; if (JERRY_UNLIKELY (parse_opts & (ECMA_PARSE_GENERATOR_FUNCTION | ECMA_PARSE_ASYNC_FUNCTION))) { - fallback_proto = ECMA_BUILTIN_ID_GENERATOR; + fallback_proto = ECMA_BUILTIN_ID_ASYNC_GENERATOR; + fallback_ctor = ECMA_BUILTIN_ID_ASYNC_GENERATOR_FUNCTION; - if (parse_opts & ECMA_PARSE_ASYNC_FUNCTION) + if (!(parse_opts & ECMA_PARSE_GENERATOR_FUNCTION)) { - fallback_proto = ECMA_BUILTIN_ID_ASYNC_GENERATOR; - - if (new_target_p == NULL) - { - new_target_p = ecma_builtin_get (ECMA_BUILTIN_ID_ASYNC_GENERATOR_FUNCTION); - } + fallback_proto = ECMA_BUILTIN_ID_ASYNC_FUNCTION_PROTOTYPE; + fallback_ctor = ECMA_BUILTIN_ID_ASYNC_FUNCTION; } - else if (new_target_p == NULL) + else if (!(parse_opts & ECMA_PARSE_ASYNC_FUNCTION)) { - new_target_p = ecma_builtin_get (ECMA_BUILTIN_ID_GENERATOR_FUNCTION); + fallback_proto = ECMA_BUILTIN_ID_GENERATOR; + fallback_ctor = ECMA_BUILTIN_ID_GENERATOR_FUNCTION; } } - else if (new_target_p == NULL) + + if (new_target_p == NULL) { - new_target_p = ecma_builtin_get (ECMA_BUILTIN_ID_FUNCTION); + new_target_p = ecma_builtin_get (fallback_ctor); } ecma_object_t *proto = ecma_op_get_prototype_from_constructor (new_target_p, fallback_proto); diff --git a/tests/test262-esnext-excludelist.xml b/tests/test262-esnext-excludelist.xml index 863d7c479..6958cf47f 100644 --- a/tests/test262-esnext-excludelist.xml +++ b/tests/test262-esnext-excludelist.xml @@ -8487,7 +8487,6 @@ - @@ -8738,5 +8737,4 @@ -