diff --git a/Userland/Libraries/LibJS/Runtime/PromisePrototype.cpp b/Userland/Libraries/LibJS/Runtime/PromisePrototype.cpp index c343302266..3ea98179ee 100644 --- a/Userland/Libraries/LibJS/Runtime/PromisePrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/PromisePrototype.cpp @@ -17,7 +17,7 @@ namespace JS { PromisePrototype::PromisePrototype(GlobalObject& global_object) - : Object(*global_object.object_prototype()) + : PrototypeObject(*global_object.object_prototype()) { } @@ -35,22 +35,10 @@ void PromisePrototype::initialize(GlobalObject& global_object) define_direct_property(*vm.well_known_symbol_to_string_tag(), js_string(vm, vm.names.Promise.as_string()), Attribute::Configurable); } -static Promise* promise_from(VM& vm, GlobalObject& global_object) -{ - auto* this_object = vm.this_value(global_object).to_object(global_object); - if (!this_object) - return nullptr; - if (!is(this_object)) { - vm.throw_exception(global_object, ErrorType::NotAnObjectOfType, vm.names.Promise); - return nullptr; - } - return static_cast(this_object); -} - // 27.2.5.4 Promise.prototype.then ( onFulfilled, onRejected ), https://tc39.es/ecma262/#sec-promise.prototype.then JS_DEFINE_NATIVE_FUNCTION(PromisePrototype::then) { - auto* promise = promise_from(vm, global_object); + auto* promise = typed_this_object(global_object); if (!promise) return {}; auto on_fulfilled = vm.argument(0); diff --git a/Userland/Libraries/LibJS/Runtime/PromisePrototype.h b/Userland/Libraries/LibJS/Runtime/PromisePrototype.h index 15c33da171..102c3443cd 100644 --- a/Userland/Libraries/LibJS/Runtime/PromisePrototype.h +++ b/Userland/Libraries/LibJS/Runtime/PromisePrototype.h @@ -6,12 +6,12 @@ #pragma once -#include +#include namespace JS { -class PromisePrototype final : public Object { - JS_OBJECT(PromisePrototype, Object); +class PromisePrototype final : public PrototypeObject { + JS_PROTOTYPE_OBJECT(PromisePrototype, Promise, Promise); public: PromisePrototype(GlobalObject&);