mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:07:35 +00:00
LibJS: Make Value::to_property_key() return a JS::PropertyKey
Instead of returning JS::StringOrSymbol, which is a space-optimized type used in Shape property tables, this now returns JS::PropertyKey which is *not* space-optimized, but has other niceties like optimized storage of numeric ("indexed") properties.
This commit is contained in:
parent
7ccb8c8609
commit
65a7296b8f
3 changed files with 3 additions and 3 deletions
|
@ -668,7 +668,7 @@ ThrowCompletionOr<MarkedValueList> ProxyObject::internal_own_property_keys() con
|
|||
auto trap_result_array = TRY(vm.call(*trap, &m_handler, &m_target));
|
||||
|
||||
// 8. Let trapResult be ? CreateListFromArrayLike(trapResultArray, « String, Symbol »).
|
||||
HashTable<StringOrSymbol> unique_keys;
|
||||
HashTable<PropertyKey> unique_keys;
|
||||
auto trap_result = TRY(create_list_from_array_like(global_object, trap_result_array, [&](auto value) -> ThrowCompletionOr<void> {
|
||||
auto& vm = global_object.vm();
|
||||
if (!value.is_string() && !value.is_symbol())
|
||||
|
|
|
@ -559,7 +559,7 @@ ThrowCompletionOr<double> Value::to_double(GlobalObject& global_object) const
|
|||
}
|
||||
|
||||
// 7.1.19 ToPropertyKey ( argument ), https://tc39.es/ecma262/#sec-topropertykey
|
||||
ThrowCompletionOr<StringOrSymbol> Value::to_property_key(GlobalObject& global_object) const
|
||||
ThrowCompletionOr<PropertyKey> Value::to_property_key(GlobalObject& global_object) const
|
||||
{
|
||||
auto key = TRY(to_primitive(global_object, PreferredType::String));
|
||||
if (key.is_symbol())
|
||||
|
|
|
@ -314,7 +314,7 @@ public:
|
|||
ThrowCompletionOr<i64> to_bigint_int64(GlobalObject&) const;
|
||||
ThrowCompletionOr<u64> to_bigint_uint64(GlobalObject&) const;
|
||||
ThrowCompletionOr<double> to_double(GlobalObject&) const;
|
||||
ThrowCompletionOr<StringOrSymbol> to_property_key(GlobalObject&) const;
|
||||
ThrowCompletionOr<PropertyKey> to_property_key(GlobalObject&) const;
|
||||
ThrowCompletionOr<i32> to_i32(GlobalObject& global_object) const;
|
||||
ThrowCompletionOr<u32> to_u32(GlobalObject&) const;
|
||||
ThrowCompletionOr<i16> to_i16(GlobalObject&) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue