1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:58:11 +00:00

LibJS: Implement most of the Reflect object

This commit is contained in:
Linus Groh 2020-05-01 11:06:27 +01:00 committed by Andreas Kling
parent 1ba2e6768d
commit 79b829637e
22 changed files with 877 additions and 54 deletions

View file

@ -1087,11 +1087,17 @@ PropertyName MemberExpression::computed_property_name(Interpreter& interpreter)
auto index = m_property->execute(interpreter);
if (interpreter.exception())
return {};
ASSERT(!index.is_empty());
// FIXME: What about non-integer numbers tho.
if (index.is_number() && index.to_i32() >= 0)
return PropertyName(index.to_i32());
return PropertyName(index.to_string());
if (!index.to_number().is_finite_number())
return PropertyName(index.to_string());
auto index_as_double = index.to_double();
if (index_as_double < 0 || (i32)index_as_double != index_as_double)
return PropertyName(index.to_string());
return PropertyName(index.to_i32());
}
String MemberExpression::to_string_approximation() const