1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 10:47:34 +00:00

LibJS: Unify Symbol::description() and raw_description()

Let callers take care of handling the empty optional case (undefined in
the spec).
This commit is contained in:
Linus Groh 2023-02-11 16:02:14 +00:00
parent fcdabd179a
commit 5e72fde954
5 changed files with 11 additions and 10 deletions

View file

@ -37,7 +37,7 @@ void FunctionObject::set_function_name(Variant<PropertyKey, PrivateName> const&
// 2. If Type(name) is Symbol, then
if (auto const* property_key = name_arg.get_pointer<PropertyKey>(); property_key && property_key->is_symbol()) {
// a. Let description be name's [[Description]] value.
auto const& description = property_key->as_symbol()->raw_description();
auto const& description = property_key->as_symbol()->description();
// b. If description is undefined, set name to the empty String.
if (!description.has_value())

View file

@ -21,8 +21,7 @@ public:
virtual ~Symbol() = default;
DeprecatedString description() const { return m_description.value_or(""); }
Optional<DeprecatedString> const& raw_description() const { return m_description; }
Optional<DeprecatedString> const& description() const { return m_description; }
bool is_global() const { return m_is_global; }
DeprecatedString descriptive_string() const;

View file

@ -87,8 +87,10 @@ JS_DEFINE_NATIVE_FUNCTION(SymbolConstructor::key_for)
return vm.throw_completion<TypeError>(ErrorType::NotASymbol, argument.to_string_without_side_effects());
auto& symbol = argument.as_symbol();
if (symbol.is_global())
return PrimitiveString::create(vm, symbol.description());
if (symbol.is_global()) {
// NOTE: Global symbols should always have a description string
return PrimitiveString::create(vm, *symbol.description());
}
return js_undefined();
}

View file

@ -53,7 +53,7 @@ static ThrowCompletionOr<Symbol*> this_symbol_value(VM& vm, Value value)
JS_DEFINE_NATIVE_FUNCTION(SymbolPrototype::description_getter)
{
auto* symbol = TRY(this_symbol_value(vm, vm.this_value()));
auto& description = symbol->raw_description();
auto& description = symbol->description();
if (!description.has_value())
return js_undefined();
return PrimitiveString::create(vm, *description);