Implement Symbol.matchAll (#4082)
The following methods were implemented: - String.prototype.matchAll based on ECMA-262 v11, 21.1.3.12 - RegExp.prototype[@@matchAll] based on ECMA-262 v11, 21.2.5.8 - RegExp String Iterator Object based on 21.2.7 JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
@@ -899,7 +899,8 @@ static const uint16_t ecma_global_symbol_descriptions[] =
|
||||
LIT_MAGIC_STRING_SPLIT,
|
||||
LIT_MAGIC_STRING_TO_PRIMITIVE,
|
||||
LIT_MAGIC_STRING_TO_STRING_TAG,
|
||||
LIT_MAGIC_STRING_UNSCOPABLES
|
||||
LIT_MAGIC_STRING_UNSCOPABLES,
|
||||
LIT_MAGIC_STRING_MATCH_ALL,
|
||||
};
|
||||
|
||||
JERRY_STATIC_ASSERT (sizeof (ecma_global_symbol_descriptions) / sizeof (uint16_t) == ECMA_BUILTIN_GLOBAL_SYMBOL_COUNT,
|
||||
@@ -2657,6 +2658,7 @@ ecma_object_check_class_name_is_object (ecma_object_t *obj_p) /**< object */
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_ARRAY_ITERATOR_PROTOTYPE)
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE)
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_STRING_ITERATOR_PROTOTYPE)
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_REGEXP_STRING_ITERATOR_PROTOTYPE)
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE)
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE)
|
||||
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE)
|
||||
@@ -2752,6 +2754,10 @@ ecma_object_get_class_name (ecma_object_t *obj_p) /**< object */
|
||||
{
|
||||
return LIT_MAGIC_STRING_STRING_ITERATOR_UL;
|
||||
}
|
||||
case ECMA_PSEUDO_REGEXP_STRING_ITERATOR:
|
||||
{
|
||||
return LIT_MAGIC_STRING_REGEXP_STRING_ITERATOR_UL;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
default:
|
||||
{
|
||||
|
||||
@@ -151,6 +151,19 @@ typedef struct
|
||||
uint8_t char_size; /**< size of encoded characters */
|
||||
} ecma_regexp_ctx_t;
|
||||
|
||||
/**
|
||||
* RegExpStringIterator object internal slots
|
||||
*
|
||||
* See also:
|
||||
* ECMA-262 v11, 21.2.7.2
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ecma_extended_object_t header; /**< extended object part */
|
||||
ecma_value_t iterating_regexp; /**< [[IteratingRegExp]] internal slot */
|
||||
ecma_value_t iterated_string; /**< [[IteratedString]] internal slot */
|
||||
} ecma_regexp_string_iterator_t;
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
lit_code_point_t ecma_regexp_unicode_advance (const lit_utf8_byte_t **str_p, const lit_utf8_byte_t *end_p);
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
Reference in New Issue
Block a user