mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-11 18:50:50 +00:00
LibJS: Implement RegExp.prototype.source according to the spec
RegExp.prototype.source must check if "this" object is the RegExp.prototype object before raising a TypeError.
This commit is contained in:
parent
2f6eec1322
commit
6cd966c1e1
Notes:
sideshowbarker
2024-07-18 09:25:18 +09:00
Author: https://github.com/trflynn89
Commit: 6cd966c1e1
Pull-request: https://github.com/SerenityOS/serenity/pull/8596
Reviewed-by: https://github.com/linusg
1 changed files with 9 additions and 10 deletions
|
@ -274,19 +274,18 @@ JS_DEFINE_NATIVE_GETTER(RegExpPrototype::flags)
|
|||
// 22.2.5.12 get RegExp.prototype.source, https://tc39.es/ecma262/#sec-get-regexp.prototype.source
|
||||
JS_DEFINE_NATIVE_GETTER(RegExpPrototype::source)
|
||||
{
|
||||
auto this_object = this_object_from(vm, global_object);
|
||||
if (!this_object)
|
||||
return {};
|
||||
|
||||
auto* regexp_prototype = global_object.regexp_prototype();
|
||||
if (this_object == regexp_prototype)
|
||||
return js_string(vm, "(?:)");
|
||||
|
||||
auto regexp_object = regexp_object_from(vm, global_object);
|
||||
auto* regexp_object = this_object_from(vm, global_object);
|
||||
if (!regexp_object)
|
||||
return {};
|
||||
|
||||
return js_string(vm, escape_regexp_pattern(*regexp_object));
|
||||
if (!is<RegExpObject>(regexp_object)) {
|
||||
if (same_value(regexp_object, global_object.regexp_prototype()))
|
||||
return js_string(vm, "(?:)");
|
||||
vm.throw_exception<TypeError>(global_object, ErrorType::NotA, "RegExp");
|
||||
return {};
|
||||
}
|
||||
|
||||
return js_string(vm, escape_regexp_pattern(static_cast<RegExpObject&>(*regexp_object)));
|
||||
}
|
||||
|
||||
// 22.2.5.2 RegExp.prototype.exec ( string ), https://tc39.es/ecma262/#sec-regexp.prototype.exec
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue