mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 05:39:11 +00:00
LibJS: Make Completion.[[Value]] non-optional
Instead, just use js_undefined() whenever the [[Value]] field is unused. This avoids a whole bunch of presence checks.
This commit is contained in:
parent
c0600c4353
commit
de424d6879
Notes:
github-actions[bot]
2025-04-05 09:21:48 +00:00
Author: https://github.com/awesomekling
Commit: de424d6879
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4232
65 changed files with 225 additions and 250 deletions
|
@ -132,7 +132,7 @@ inline JS::Completion clean_up_on_return(JS::Realm& stored_realm, JS::Realm& rel
|
|||
return completion;
|
||||
|
||||
// 5. Let rejectedPromise be ! Call(%Promise.reject%, %Promise%, «completion.[[Value]]»).
|
||||
auto rejected_promise = create_rejected_promise(relevant_realm, *completion.release_value());
|
||||
auto rejected_promise = create_rejected_promise(relevant_realm, completion.release_value());
|
||||
|
||||
// 6. Return the result of converting rejectedPromise to the operation’s return type.
|
||||
// Note: The operation must return a promise, so no conversion is necessary
|
||||
|
@ -308,7 +308,7 @@ JS::Completion invoke_callback(WebIDL::CallbackType& callback, Optional<JS::Valu
|
|||
|
||||
// 5. If exceptionBehavior is "rethrow", throw completion.[[Value]].
|
||||
if (exception_behavior == ExceptionBehavior::Rethrow) {
|
||||
TRY(JS::throw_completion(*completion.release_value()));
|
||||
TRY(JS::throw_completion(completion.release_value()));
|
||||
}
|
||||
// 6. Otherwise, if exceptionBehavior is "report":
|
||||
else if (exception_behavior == ExceptionBehavior::Report) {
|
||||
|
@ -316,7 +316,7 @@ JS::Completion invoke_callback(WebIDL::CallbackType& callback, Optional<JS::Valu
|
|||
|
||||
// 2. Report an exception completion.[[Value]] for relevant realm’s global object.
|
||||
auto& window_or_worker = as<HTML::WindowOrWorkerGlobalScopeMixin>(relevant_realm.global_object());
|
||||
window_or_worker.report_an_exception(*completion.release_value());
|
||||
window_or_worker.report_an_exception(completion.release_value());
|
||||
|
||||
// 3. Return the unique undefined IDL value.
|
||||
return JS::js_undefined();
|
||||
|
@ -326,7 +326,7 @@ JS::Completion invoke_callback(WebIDL::CallbackType& callback, Optional<JS::Valu
|
|||
VERIFY(callback.operation_returns_promise == OperationReturnsPromise::Yes);
|
||||
|
||||
// 8. Let rejectedPromise be ! Call(%Promise.reject%, %Promise%, «completion.[[Value]]»).
|
||||
auto rejected_promise = create_rejected_promise(relevant_realm, *completion.release_value());
|
||||
auto rejected_promise = create_rejected_promise(relevant_realm, completion.release_value());
|
||||
|
||||
// 9. Return the result of converting rejectedPromise to the callback function’s return type.
|
||||
return JS::Value { rejected_promise->promise() };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue