mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 03:55:24 +00:00
LibJS: Implement IsRegExp abstract operation
This is needed by various String.prototype operations, as well as the RegExp constructor.
This commit is contained in:
parent
d8899ea65b
commit
43f948b357
Notes:
sideshowbarker
2024-07-19 00:36:21 +09:00
Author: https://github.com/XavierCooney Commit: https://github.com/SerenityOS/serenity/commit/43f948b3573 Pull-request: https://github.com/SerenityOS/serenity/pull/4507 Reviewed-by: https://github.com/linusg ✅
2 changed files with 17 additions and 0 deletions
|
@ -102,6 +102,22 @@ Function& Value::as_function()
|
|||
return static_cast<Function&>(as_object());
|
||||
}
|
||||
|
||||
bool Value::is_regexp(GlobalObject& global_object) const
|
||||
{
|
||||
// 7.2.8 IsRegExp, https://tc39.es/ecma262/#sec-isregexp
|
||||
|
||||
if (!is_object())
|
||||
return false;
|
||||
|
||||
auto matcher = as_object().get(global_object.vm().well_known_symbol_match());
|
||||
if (global_object.vm().exception())
|
||||
return false;
|
||||
if (!matcher.is_empty() && !matcher.is_undefined())
|
||||
return matcher.to_boolean();
|
||||
|
||||
return as_object().is_regexp_object();
|
||||
}
|
||||
|
||||
String Value::to_string_without_side_effects() const
|
||||
{
|
||||
switch (m_type) {
|
||||
|
|
|
@ -76,6 +76,7 @@ public:
|
|||
bool is_cell() const { return is_string() || is_accessor() || is_object() || is_bigint() || is_symbol() || is_native_property(); }
|
||||
bool is_array() const;
|
||||
bool is_function() const;
|
||||
bool is_regexp(GlobalObject& global_object) const;
|
||||
|
||||
bool is_nan() const { return is_number() && __builtin_isnan(as_double()); }
|
||||
bool is_infinity() const { return is_number() && __builtin_isinf(as_double()); }
|
||||
|
|
Loading…
Add table
Reference in a new issue