mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-06 17:48:37 +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() };
|
||||
|
|
|
@ -166,7 +166,7 @@ struct Formatter<Web::WebIDL::Exception> : Formatter<FormatString> {
|
|||
},
|
||||
[&](JS::Completion const& completion) -> ErrorOr<void> {
|
||||
VERIFY(completion.is_error());
|
||||
auto value = *completion.value();
|
||||
auto value = completion.value();
|
||||
|
||||
if (value.is_object()) {
|
||||
auto& object = value.as_object();
|
||||
|
|
|
@ -293,7 +293,7 @@ void wait_for_all(JS::Realm& realm, Vector<GC::Ref<Promise>> const& promises, Fu
|
|||
GC::Ref<Promise> create_rejected_promise_from_exception(JS::Realm& realm, Exception exception)
|
||||
{
|
||||
auto throw_completion = Bindings::exception_to_throw_completion(realm.vm(), move(exception));
|
||||
return WebIDL::create_rejected_promise(realm, *throw_completion.value());
|
||||
return WebIDL::create_rejected_promise(realm, throw_completion.value());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue