diff options
author | Idan Horowitz <idan.horowitz@gmail.com> | 2021-10-29 01:04:26 +0300 |
---|---|---|
committer | Idan Horowitz <idan.horowitz@gmail.com> | 2021-10-29 21:29:24 +0300 |
commit | 84681788c4b70527a2dfc75cbd11a72b2fe1cacb (patch) | |
tree | ef9009dd2ee6c66f50a9e9fed510c9ac16f6dcb3 /Userland | |
parent | 909e13c5e61b2cad1147dc3b737a7b14005f3c48 (diff) | |
download | serenity-84681788c4b70527a2dfc75cbd11a72b2fe1cacb.zip |
LibJS: Convert FinalizationRegistryPrototype funcs to ThrowCompletionOr
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.cpp | 48 | ||||
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h | 6 |
2 files changed, 22 insertions, 32 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.cpp b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.cpp index 4937e297bd..2a610d5c9e 100644 --- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.cpp @@ -20,9 +20,9 @@ void FinalizationRegistryPrototype::initialize(GlobalObject& global_object) Object::initialize(global_object); u8 attr = Attribute::Writable | Attribute::Configurable; - define_old_native_function(vm.names.cleanupSome, cleanup_some, 0, attr); - define_old_native_function(vm.names.register_, register_, 2, attr); - define_old_native_function(vm.names.unregister, unregister, 1, attr); + define_native_function(vm.names.cleanupSome, cleanup_some, 0, attr); + define_native_function(vm.names.register_, register_, 2, attr); + define_native_function(vm.names.unregister, unregister, 1, attr); // 26.2.3.4 FinalizationRegistry.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-finalization-registry.prototype-@@tostringtag define_direct_property(*vm.well_known_symbol_to_string_tag(), js_string(global_object.heap(), vm.names.FinalizationRegistry.as_string()), Attribute::Configurable); @@ -33,15 +33,13 @@ FinalizationRegistryPrototype::~FinalizationRegistryPrototype() } // @STAGE 2@ FinalizationRegistry.prototype.cleanupSome ( [ callback ] ), https://github.com/tc39/proposal-cleanup-some/blob/master/spec/finalization-registry.html -JS_DEFINE_OLD_NATIVE_FUNCTION(FinalizationRegistryPrototype::cleanup_some) +JS_DEFINE_NATIVE_FUNCTION(FinalizationRegistryPrototype::cleanup_some) { - auto* finalization_registry = TRY_OR_DISCARD(typed_this_object(global_object)); + auto* finalization_registry = TRY(typed_this_object(global_object)); auto callback = vm.argument(0); - if (vm.argument_count() > 0 && !callback.is_function()) { - vm.throw_exception<TypeError>(global_object, ErrorType::NotAFunction, callback.to_string_without_side_effects()); - return {}; - } + if (vm.argument_count() > 0 && !callback.is_function()) + return vm.throw_completion<TypeError>(global_object, ErrorType::NotAFunction, callback.to_string_without_side_effects()); finalization_registry->cleanup(callback.is_undefined() ? nullptr : &callback.as_function()); @@ -49,27 +47,21 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(FinalizationRegistryPrototype::cleanup_some) } // 26.2.3.2 FinalizationRegistry.prototype.register ( target, heldValue [ , unregisterToken ] ), https://tc39.es/ecma262/#sec-finalization-registry.prototype.register -JS_DEFINE_OLD_NATIVE_FUNCTION(FinalizationRegistryPrototype::register_) +JS_DEFINE_NATIVE_FUNCTION(FinalizationRegistryPrototype::register_) { - auto* finalization_registry = TRY_OR_DISCARD(typed_this_object(global_object)); + auto* finalization_registry = TRY(typed_this_object(global_object)); auto target = vm.argument(0); - if (!target.is_object()) { - vm.throw_exception<TypeError>(global_object, ErrorType::NotAnObject, target.to_string_without_side_effects()); - return {}; - } + if (!target.is_object()) + return vm.throw_completion<TypeError>(global_object, ErrorType::NotAnObject, target.to_string_without_side_effects()); auto held_value = vm.argument(1); - if (same_value(target, held_value)) { - vm.throw_exception<TypeError>(global_object, ErrorType::FinalizationRegistrySameTargetAndValue); - return {}; - } + if (same_value(target, held_value)) + return vm.throw_completion<TypeError>(global_object, ErrorType::FinalizationRegistrySameTargetAndValue); auto unregister_token = vm.argument(2); - if (!unregister_token.is_object() && !unregister_token.is_undefined()) { - vm.throw_exception<TypeError>(global_object, ErrorType::NotAnObject, unregister_token.to_string_without_side_effects()); - return {}; - } + if (!unregister_token.is_object() && !unregister_token.is_undefined()) + return vm.throw_completion<TypeError>(global_object, ErrorType::NotAnObject, unregister_token.to_string_without_side_effects()); finalization_registry->add_finalization_record(target.as_cell(), held_value, unregister_token.is_undefined() ? nullptr : &unregister_token.as_object()); @@ -77,15 +69,13 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(FinalizationRegistryPrototype::register_) } // 26.2.3.3 FinalizationRegistry.prototype.unregister ( unregisterToken ), https://tc39.es/ecma262/#sec-finalization-registry.prototype.unregister -JS_DEFINE_OLD_NATIVE_FUNCTION(FinalizationRegistryPrototype::unregister) +JS_DEFINE_NATIVE_FUNCTION(FinalizationRegistryPrototype::unregister) { - auto* finalization_registry = TRY_OR_DISCARD(typed_this_object(global_object)); + auto* finalization_registry = TRY(typed_this_object(global_object)); auto unregister_token = vm.argument(0); - if (!unregister_token.is_object()) { - vm.throw_exception<TypeError>(global_object, ErrorType::NotAnObject, unregister_token.to_string_without_side_effects()); - return {}; - } + if (!unregister_token.is_object()) + return vm.throw_completion<TypeError>(global_object, ErrorType::NotAnObject, unregister_token.to_string_without_side_effects()); return Value(finalization_registry->remove_by_token(unregister_token.as_object())); } diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h index 5bd31a0aed..f78f782645 100644 --- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h +++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h @@ -20,9 +20,9 @@ public: virtual ~FinalizationRegistryPrototype() override; private: - JS_DECLARE_OLD_NATIVE_FUNCTION(cleanup_some); - JS_DECLARE_OLD_NATIVE_FUNCTION(register_); - JS_DECLARE_OLD_NATIVE_FUNCTION(unregister); + JS_DECLARE_NATIVE_FUNCTION(cleanup_some); + JS_DECLARE_NATIVE_FUNCTION(register_); + JS_DECLARE_NATIVE_FUNCTION(unregister); }; } |