mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-23 09:51:57 -05:00
LibJS: Add spec comments to Value::to_property_key()
This commit is contained in:
parent
7abd9efe33
commit
c2d33ec48a
1 changed files with 11 additions and 2 deletions
|
@ -853,12 +853,21 @@ ThrowCompletionOr<double> Value::to_double(VM& vm) const
|
|||
// 7.1.19 ToPropertyKey ( argument ), https://tc39.es/ecma262/#sec-topropertykey
|
||||
ThrowCompletionOr<PropertyKey> Value::to_property_key(VM& vm) const
|
||||
{
|
||||
// OPTIMIZATION: Return the value as a numeric PropertyKey, if possible.
|
||||
if (is_int32() && as_i32() >= 0)
|
||||
return PropertyKey { as_i32() };
|
||||
|
||||
// 1. Let key be ? ToPrimitive(argument, string).
|
||||
auto key = TRY(to_primitive(vm, PreferredType::String));
|
||||
if (key.is_symbol())
|
||||
|
||||
// 2. If key is a Symbol, then
|
||||
if (key.is_symbol()) {
|
||||
// a. Return key.
|
||||
return &key.as_symbol();
|
||||
return TRY(key.to_string(vm));
|
||||
}
|
||||
|
||||
// 3. Return ! ToString(key).
|
||||
return MUST(key.to_string(vm));
|
||||
}
|
||||
|
||||
ThrowCompletionOr<i32> Value::to_i32_slow_case(VM& vm) const
|
||||
|
|
Loading…
Add table
Reference in a new issue