Update RegExp.prototype accessors for ES11 (#4103)

JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai daniel.batyai@h-lab.eu
This commit is contained in:
Dániel Bátyai
2020-08-06 14:24:48 +02:00
committed by GitHub
parent 531f724926
commit 3d44b26aeb
6 changed files with 42 additions and 72 deletions
@@ -48,15 +48,6 @@ enum
/** These routines must be in this order */
ECMA_REGEXP_PROTOTYPE_ROUTINE_START = ECMA_BUILTIN_ID__COUNT - 1,
ECMA_REGEXP_PROTOTYPE_ROUTINE_EXEC,
#if ENABLED (JERRY_ESNEXT)
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_SOURCE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_GLOBAL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_IGNORE_CASE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_MULTILINE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_STICKY,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_UNICODE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_DOT_ALL,
#endif /* ENABLED (JERRY_ESNEXT) */
#if ENABLED (JERRY_BUILTIN_ANNEXB)
ECMA_REGEXP_PROTOTYPE_ROUTINE_COMPILE,
#endif /* ENABLED (JERRY_BUILTIN_ANNEXB) */
@@ -64,8 +55,16 @@ enum
ECMA_REGEXP_PROTOTYPE_ROUTINE_TEST,
ECMA_REGEXP_PROTOTYPE_ROUTINE_TO_STRING,
#if ENABLED (JERRY_ESNEXT)
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_SOURCE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_FLAGS,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_GLOBAL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_IGNORE_CASE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_MULTILINE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_STICKY,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_UNICODE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_DOT_ALL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SEARCH,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_REPLACE,
@@ -603,8 +602,17 @@ ecma_builtin_regexp_prototype_dispatch_routine (uint16_t builtin_routine_id, /**
}
case ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_SOURCE:
{
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) obj_p;
if (!ecma_object_class_is (obj_p, LIT_MAGIC_STRING_REGEXP_UL))
{
if (ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_REGEXP_PROTOTYPE))
{
return ecma_make_magic_string_value (LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP);
}
return ecma_raise_type_error (ECMA_ERR_MSG ("'this' is not a RegExp object"));
}
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) obj_p;
return ecma_builtin_regexp_prototype_get_source (re_obj_p);
}
case ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_GLOBAL:
@@ -614,8 +622,17 @@ ecma_builtin_regexp_prototype_dispatch_routine (uint16_t builtin_routine_id, /**
case ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_UNICODE:
case ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_DOT_ALL:
{
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) obj_p;
if (!ecma_object_class_is (obj_p, LIT_MAGIC_STRING_REGEXP_UL))
{
if (ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_REGEXP_PROTOTYPE))
{
return ECMA_VALUE_UNDEFINED;
}
return ecma_raise_type_error (ECMA_ERR_MSG ("'this' is not a RegExp object"));
}
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) obj_p;
return ecma_builtin_regexp_prototype_flags_helper (re_obj_p, builtin_routine_id);
}
#endif /* ENABLED (JERRY_ESNEXT) */