1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 05:15:07 +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:
Xavier Cooney 2020-12-25 12:52:19 +11:00 committed by Andreas Kling
parent d8899ea65b
commit 43f948b357
2 changed files with 17 additions and 0 deletions

View file

@ -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) {