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:
@@ -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) */
|
||||
|
||||
@@ -50,44 +50,11 @@ try {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
try {
|
||||
RegExp.prototype.source;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
try {
|
||||
RegExp.prototype.global;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
try {
|
||||
RegExp.prototype.ignoreCase;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
try {
|
||||
RegExp.prototype.multiline;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
try {
|
||||
RegExp.prototype.sticky;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
try {
|
||||
RegExp.prototype.unicode;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
assert (RegExp.prototype.source === '(?:)');
|
||||
assert (RegExp.prototype.global === undefined);
|
||||
assert (RegExp.prototype.ignoreCase === undefined);
|
||||
assert (RegExp.prototype.multiline === undefined);
|
||||
assert (RegExp.prototype.sticky === undefined);
|
||||
assert (RegExp.prototype.unicode === undefined);
|
||||
assert (RegExp.prototype.dotAll === undefined);
|
||||
assert (RegExp.prototype.flags === '');
|
||||
|
||||
@@ -61,12 +61,7 @@ var r = /abc/yg;
|
||||
m = r.exec ("strabcstr");
|
||||
assert (m === null);
|
||||
|
||||
try {
|
||||
RegExp.prototype.flags;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
assert (RegExp.prototype.flags === "");
|
||||
|
||||
var flagsProp = Object.getOwnPropertyDescriptor (RegExp.prototype, "flags");
|
||||
assert(flagsProp.get.call({}) === '');
|
||||
|
||||
@@ -39,12 +39,7 @@ assert(new RegExp('/\n/').source.length === 6);
|
||||
assert(new RegExp(/\/\//).source === '\\/\\/');
|
||||
assert(new RegExp(/\?\//g).source === '\\?\\/');
|
||||
|
||||
try {
|
||||
RegExp.prototype.source;
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
assert (RegExp.prototype.source === '(?:)')
|
||||
|
||||
var sourceProp = Object.getOwnPropertyDescriptor (RegExp.prototype, "source");
|
||||
try {
|
||||
|
||||
@@ -353,4 +353,8 @@
|
||||
<test id="built-ins/parseInt/S15.1.2.2_A2_T10.js"><reason>Unicode 13: 0x180E is no longer whitespace character</reason></test>
|
||||
<test id="built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-err.js"><reason>lastIndex handling in Symbol.search has changed since ES6</reason></test>
|
||||
<test id="built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore.js"><reason>lastIndex handling in Symbol.search has changed since ES6</reason></test>
|
||||
<test id="built-ins/RegExp/prototype/global/15.10.7.2-1.js"><reason>RegExp accessors should no longer throw when called on the RegExp prototype</reason></test>
|
||||
<test id="built-ins/RegExp/prototype/ignoreCase/15.10.7.3-1.js"><reason>RegExp accessors should no longer throw when called on the RegExp prototype</reason></test>
|
||||
<test id="built-ins/RegExp/prototype/multiline/15.10.7.4-1.js"><reason>RegExp accessors should no longer throw when called on the RegExp prototype</reason></test>
|
||||
<test id="built-ins/RegExp/prototype/source/15.10.7.1-1.js"><reason>RegExp accessors should no longer throw when called on the RegExp prototype</reason></test>
|
||||
</excludeList>
|
||||
|
||||
@@ -1876,20 +1876,12 @@
|
||||
<test id="built-ins/RegExp/prototype/Symbol.replace/result-get-groups-prop-err.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/dotAll/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/dotAll/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/flags/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/global/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/global/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/ignoreCase/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/ignoreCase/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/multiline/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/multiline/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/source/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/source/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/sticky/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/sticky/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/unicode/cross-realm.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExp/prototype/unicode/this-val-regexp-prototype.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExpStringIteratorPrototype/Symbol.toStringTag.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExpStringIteratorPrototype/ancestry.js"><reason></reason></test>
|
||||
<test id="built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-call-throws.js"><reason></reason></test>
|
||||
|
||||
Reference in New Issue
Block a user