@@ -492,28 +492,28 @@ ecma_op_create_dynamic_function (const ecma_value_t *arguments_list_p, /**< argu
492
492
493
493
#if ENABLED (JERRY_ESNEXT )
494
494
ecma_object_t * new_target_p = JERRY_CONTEXT (current_new_target_p );
495
+ ecma_builtin_id_t fallback_ctor = ECMA_BUILTIN_ID_FUNCTION ;
495
496
496
497
if (JERRY_UNLIKELY (parse_opts & (ECMA_PARSE_GENERATOR_FUNCTION | ECMA_PARSE_ASYNC_FUNCTION )))
497
498
{
498
- fallback_proto = ECMA_BUILTIN_ID_GENERATOR ;
499
+ fallback_proto = ECMA_BUILTIN_ID_ASYNC_GENERATOR ;
500
+ fallback_ctor = ECMA_BUILTIN_ID_ASYNC_GENERATOR_FUNCTION ;
499
501
500
- if (parse_opts & ECMA_PARSE_ASYNC_FUNCTION )
502
+ if (!( parse_opts & ECMA_PARSE_GENERATOR_FUNCTION ) )
501
503
{
502
- fallback_proto = ECMA_BUILTIN_ID_ASYNC_GENERATOR ;
503
-
504
- if (new_target_p == NULL )
505
- {
506
- new_target_p = ecma_builtin_get (ECMA_BUILTIN_ID_ASYNC_GENERATOR_FUNCTION );
507
- }
504
+ fallback_proto = ECMA_BUILTIN_ID_ASYNC_FUNCTION_PROTOTYPE ;
505
+ fallback_ctor = ECMA_BUILTIN_ID_ASYNC_FUNCTION ;
508
506
}
509
- else if (new_target_p == NULL )
507
+ else if (!( parse_opts & ECMA_PARSE_ASYNC_FUNCTION ) )
510
508
{
511
- new_target_p = ecma_builtin_get (ECMA_BUILTIN_ID_GENERATOR_FUNCTION );
509
+ fallback_proto = ECMA_BUILTIN_ID_GENERATOR ;
510
+ fallback_ctor = ECMA_BUILTIN_ID_GENERATOR_FUNCTION ;
512
511
}
513
512
}
514
- else if (new_target_p == NULL )
513
+
514
+ if (new_target_p == NULL )
515
515
{
516
- new_target_p = ecma_builtin_get (ECMA_BUILTIN_ID_FUNCTION );
516
+ new_target_p = ecma_builtin_get (fallback_ctor );
517
517
}
518
518
519
519
ecma_object_t * proto = ecma_op_get_prototype_from_constructor (new_target_p , fallback_proto );
0 commit comments