From 16559002bfedfd1a50f161cd08340ad1f9d1963b Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sat, 12 Apr 2025 09:58:08 -0400 Subject: [PATCH] LibJS: Fully qualify use of `js_undefined` in TRY_OR_REJECT macro This allows this macro to be used in LibWeb. --- Libraries/LibJS/Runtime/PromiseCapability.h | 34 ++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Libraries/LibJS/Runtime/PromiseCapability.h b/Libraries/LibJS/Runtime/PromiseCapability.h index 5b77efcceec..6a89c00b8ed 100644 --- a/Libraries/LibJS/Runtime/PromiseCapability.h +++ b/Libraries/LibJS/Runtime/PromiseCapability.h @@ -39,23 +39,23 @@ private: }; // 27.2.1.1.1 IfAbruptRejectPromise ( value, capability ), https://tc39.es/ecma262/#sec-ifabruptrejectpromise -#define __TRY_OR_REJECT(vm, capability, expression, CALL_CHECK) \ - ({ \ - auto&& _temporary_try_or_reject_result = (expression); \ - /* 1. If value is an abrupt completion, then */ \ - if (_temporary_try_or_reject_result.is_error()) { \ - /* a. Perform ? Call(capability.[[Reject]], undefined, « value.[[Value]] »). */ \ - CALL_CHECK(JS::call(vm, *(capability)->reject(), js_undefined(), _temporary_try_or_reject_result.release_error().value())); \ - \ - /* b. Return capability.[[Promise]]. */ \ - return (capability)->promise(); \ - } \ - \ - static_assert(!::AK::Detail::IsLvalueReference, \ - "Do not return a reference from a fallible expression"); \ - \ - /* 2. Else if value is a Completion Record, set value to value.[[Value]]. */ \ - _temporary_try_or_reject_result.release_value(); \ +#define __TRY_OR_REJECT(vm, capability, expression, CALL_CHECK) \ + ({ \ + auto&& _temporary_try_or_reject_result = (expression); \ + /* 1. If value is an abrupt completion, then */ \ + if (_temporary_try_or_reject_result.is_error()) { \ + /* a. Perform ? Call(capability.[[Reject]], undefined, « value.[[Value]] »). */ \ + CALL_CHECK(JS::call(vm, *(capability)->reject(), JS::js_undefined(), _temporary_try_or_reject_result.release_error().value())); \ + \ + /* b. Return capability.[[Promise]]. */ \ + return (capability)->promise(); \ + } \ + \ + static_assert(!::AK::Detail::IsLvalueReference, \ + "Do not return a reference from a fallible expression"); \ + \ + /* 2. Else if value is a Completion Record, set value to value.[[Value]]. */ \ + _temporary_try_or_reject_result.release_value(); \ }) #define TRY_OR_REJECT(vm, capability, expression) \