1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:27:44 +00:00

LibJS: Convert SymbolPrototype functions to ThrowCompletionOr

This commit is contained in:
Idan Horowitz 2021-10-29 00:17:33 +03:00
parent 294f244745
commit 7c96ed8cf3
2 changed files with 16 additions and 16 deletions

View file

@ -28,10 +28,10 @@ void SymbolPrototype::initialize(GlobalObject& global_object)
auto& vm = this->vm();
Object::initialize(global_object);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_old_native_function(vm.names.toString, to_string, 0, attr);
define_old_native_function(vm.names.valueOf, value_of, 0, attr);
define_old_native_accessor(vm.names.description, description_getter, {}, Attribute::Configurable);
define_old_native_function(*vm.well_known_symbol_to_primitive(), symbol_to_primitive, 1, Attribute::Configurable);
define_native_function(vm.names.toString, to_string, 0, attr);
define_native_function(vm.names.valueOf, value_of, 0, attr);
define_native_accessor(vm.names.description, description_getter, {}, Attribute::Configurable);
define_native_function(*vm.well_known_symbol_to_primitive(), symbol_to_primitive, 1, Attribute::Configurable);
// 20.4.3.6 Symbol.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
define_direct_property(*vm.well_known_symbol_to_string_tag(), js_string(global_object.heap(), "Symbol"), Attribute::Configurable);
@ -53,9 +53,9 @@ static ThrowCompletionOr<Symbol*> this_symbol_value(GlobalObject& global_object,
}
// 20.4.3.2 get Symbol.prototype.description, https://tc39.es/ecma262/#sec-symbol.prototype.description
JS_DEFINE_OLD_NATIVE_FUNCTION(SymbolPrototype::description_getter)
JS_DEFINE_NATIVE_FUNCTION(SymbolPrototype::description_getter)
{
auto* symbol = TRY_OR_DISCARD(this_symbol_value(global_object, vm.this_value(global_object)));
auto* symbol = TRY(this_symbol_value(global_object, vm.this_value(global_object)));
auto& description = symbol->raw_description();
if (!description.has_value())
return js_undefined();
@ -63,23 +63,23 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(SymbolPrototype::description_getter)
}
// 20.4.3.3 Symbol.prototype.toString ( ), https://tc39.es/ecma262/#sec-symbol.prototype.tostring
JS_DEFINE_OLD_NATIVE_FUNCTION(SymbolPrototype::to_string)
JS_DEFINE_NATIVE_FUNCTION(SymbolPrototype::to_string)
{
auto* symbol = TRY_OR_DISCARD(this_symbol_value(global_object, vm.this_value(global_object)));
auto* symbol = TRY(this_symbol_value(global_object, vm.this_value(global_object)));
return js_string(vm, symbol->to_string());
}
// 20.4.3.4 Symbol.prototype.valueOf ( ), https://tc39.es/ecma262/#sec-symbol.prototype.valueof
JS_DEFINE_OLD_NATIVE_FUNCTION(SymbolPrototype::value_of)
JS_DEFINE_NATIVE_FUNCTION(SymbolPrototype::value_of)
{
return TRY_OR_DISCARD(this_symbol_value(global_object, vm.this_value(global_object)));
return TRY(this_symbol_value(global_object, vm.this_value(global_object)));
}
// 20.4.3.5 Symbol.prototype [ @@toPrimitive ] ( hint ), https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
JS_DEFINE_OLD_NATIVE_FUNCTION(SymbolPrototype::symbol_to_primitive)
JS_DEFINE_NATIVE_FUNCTION(SymbolPrototype::symbol_to_primitive)
{
// The hint argument is ignored.
return TRY_OR_DISCARD(this_symbol_value(global_object, vm.this_value(global_object)));
return TRY(this_symbol_value(global_object, vm.this_value(global_object)));
}
}

View file

@ -19,11 +19,11 @@ public:
virtual ~SymbolPrototype() override;
private:
JS_DECLARE_OLD_NATIVE_FUNCTION(description_getter);
JS_DECLARE_NATIVE_FUNCTION(description_getter);
JS_DECLARE_OLD_NATIVE_FUNCTION(to_string);
JS_DECLARE_OLD_NATIVE_FUNCTION(value_of);
JS_DECLARE_OLD_NATIVE_FUNCTION(symbol_to_primitive);
JS_DECLARE_NATIVE_FUNCTION(to_string);
JS_DECLARE_NATIVE_FUNCTION(value_of);
JS_DECLARE_NATIVE_FUNCTION(symbol_to_primitive);
};
}