mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 10:18:11 +00:00
LibJS: Convert Object::get() to ThrowCompletionOr
To no one's surprise, this patch is pretty big - this is possibly the most used AO of all of them. Definitely worth it though.
This commit is contained in:
parent
9b6c09e2c4
commit
b7e5f08e56
61 changed files with 326 additions and 686 deletions
|
@ -52,9 +52,7 @@ Value WeakMapConstructor::construct(FunctionObject& new_target)
|
|||
if (vm.argument(0).is_nullish())
|
||||
return weak_map;
|
||||
|
||||
auto adder = weak_map->get(vm.names.set);
|
||||
if (vm.exception())
|
||||
return {};
|
||||
auto adder = TRY_OR_DISCARD(weak_map->get(vm.names.set));
|
||||
if (!adder.is_function()) {
|
||||
vm.throw_exception<TypeError>(global_object, ErrorType::NotAFunction, "'set' property of WeakMap");
|
||||
return {};
|
||||
|
@ -66,12 +64,14 @@ Value WeakMapConstructor::construct(FunctionObject& new_target)
|
|||
vm.throw_exception<TypeError>(global_object, ErrorType::NotAnObject, String::formatted("Iterator value {}", iterator_value.to_string_without_side_effects()));
|
||||
return IterationDecision::Break;
|
||||
}
|
||||
auto key = iterator_value.as_object().get(0);
|
||||
if (vm.exception())
|
||||
auto key_or_error = iterator_value.as_object().get(0);
|
||||
if (key_or_error.is_error())
|
||||
return IterationDecision::Break;
|
||||
auto value = iterator_value.as_object().get(1);
|
||||
if (vm.exception())
|
||||
auto key = key_or_error.release_value();
|
||||
auto value_or_error = iterator_value.as_object().get(1);
|
||||
if (value_or_error.is_error())
|
||||
return IterationDecision::Break;
|
||||
auto value = value_or_error.release_value();
|
||||
auto result = vm.call(adder.as_function(), Value(weak_map), key, value);
|
||||
return result.is_error() ? IterationDecision::Break : IterationDecision::Continue;
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue