From 68ac13a192a9d15a67e706658aaf808fe0c4fe9f Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sun, 14 Nov 2021 00:48:15 +0000 Subject: [PATCH] LibJS: Add a Completion(ThrowCompletionOr const&) constructor --- Userland/Libraries/LibJS/Runtime/Completion.cpp | 12 ++++++++++++ Userland/Libraries/LibJS/Runtime/Completion.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/Userland/Libraries/LibJS/Runtime/Completion.cpp b/Userland/Libraries/LibJS/Runtime/Completion.cpp index b29a1af86d..09d9a7002b 100644 --- a/Userland/Libraries/LibJS/Runtime/Completion.cpp +++ b/Userland/Libraries/LibJS/Runtime/Completion.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2021, Idan Horowitz + * Copyright (c) 2021, Linus Groh * * SPDX-License-Identifier: BSD-2-Clause */ @@ -15,6 +16,17 @@ namespace JS { +Completion::Completion(ThrowCompletionOr const& throw_completion_or_value) +{ + if (throw_completion_or_value.is_throw_completion()) { + m_type = Type::Throw; + m_value = throw_completion_or_value.throw_completion().value(); + } else { + m_type = Type::Normal; + m_value = throw_completion_or_value.value(); + } +} + // 6.2.3.1 Await, https://tc39.es/ecma262/#await ThrowCompletionOr await(GlobalObject& global_object, Value value) { diff --git a/Userland/Libraries/LibJS/Runtime/Completion.h b/Userland/Libraries/LibJS/Runtime/Completion.h index 26c4c07ae7..f801aa15cf 100644 --- a/Userland/Libraries/LibJS/Runtime/Completion.h +++ b/Userland/Libraries/LibJS/Runtime/Completion.h @@ -46,6 +46,8 @@ public: VERIFY(!m_value->is_empty()); } + Completion(ThrowCompletionOr const&); + // 5.2.3.1 Implicit Completion Values, https://tc39.es/ecma262/#sec-implicit-completion-values // Not `explicit` on purpose. Completion(Value value)