1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 07:17:35 +00:00

LibJS: Convert get_number_option() to ThrowCompletionOr

This commit is contained in:
Idan Horowitz 2021-09-18 19:38:29 +03:00
parent 6d3de03549
commit 407cf04884
3 changed files with 8 additions and 7 deletions

View file

@ -683,18 +683,18 @@ ThrowCompletionOr<Optional<int>> default_number_option(GlobalObject& global_obje
} }
// 9.2.15 GetNumberOption ( options, property, minimum, maximum, fallback ), https://tc39.es/ecma402/#sec-getnumberoption // 9.2.15 GetNumberOption ( options, property, minimum, maximum, fallback ), https://tc39.es/ecma402/#sec-getnumberoption
Optional<int> get_number_option(GlobalObject& global_object, Object const& options, PropertyName const& property, int minimum, int maximum, Optional<int> fallback) ThrowCompletionOr<Optional<int>> get_number_option(GlobalObject& global_object, Object const& options, PropertyName const& property, int minimum, int maximum, Optional<int> fallback)
{ {
auto& vm = global_object.vm(); auto& vm = global_object.vm();
// 1. Assert: Type(options) is Object. // 1. Assert: Type(options) is Object.
// 2. Let value be ? Get(options, property). // 2. Let value be ? Get(options, property).
auto value = options.get(property); auto value = options.get(property);
if (vm.exception()) if (auto* exception = vm.exception())
return {}; return throw_completion(exception->value());
// 3. Return ? DefaultNumberOption(value, minimum, maximum, fallback). // 3. Return ? DefaultNumberOption(value, minimum, maximum, fallback).
return TRY_OR_DISCARD(default_number_option(global_object, value, minimum, maximum, move(fallback))); return default_number_option(global_object, value, minimum, maximum, move(fallback));
} }
// 9.2.16 PartitionPattern ( pattern ), https://tc39.es/ecma402/#sec-partitionpattern // 9.2.16 PartitionPattern ( pattern ), https://tc39.es/ecma402/#sec-partitionpattern

View file

@ -48,7 +48,7 @@ ThrowCompletionOr<Array*> supported_locales(GlobalObject&, Vector<String> const&
ThrowCompletionOr<Object*> coerce_options_to_object(GlobalObject& global_object, Value options); ThrowCompletionOr<Object*> coerce_options_to_object(GlobalObject& global_object, Value options);
ThrowCompletionOr<Value> get_option(GlobalObject& global_object, Object const& options, PropertyName const& property, Value::Type type, Vector<StringView> const& values, Fallback fallback); ThrowCompletionOr<Value> get_option(GlobalObject& global_object, Object const& options, PropertyName const& property, Value::Type type, Vector<StringView> const& values, Fallback fallback);
ThrowCompletionOr<Optional<int>> default_number_option(GlobalObject& global_object, Value value, int minimum, int maximum, Optional<int> fallback); ThrowCompletionOr<Optional<int>> default_number_option(GlobalObject& global_object, Value value, int minimum, int maximum, Optional<int> fallback);
Optional<int> get_number_option(GlobalObject& global_object, Object const& options, PropertyName const& property, int minimum, int maximum, Optional<int> fallback); ThrowCompletionOr<Optional<int>> get_number_option(GlobalObject& global_object, Object const& options, PropertyName const& property, int minimum, int maximum, Optional<int> fallback);
Vector<PatternPartition> partition_pattern(StringView pattern); Vector<PatternPartition> partition_pattern(StringView pattern);
} }

View file

@ -249,9 +249,10 @@ void set_number_format_digit_options(GlobalObject& global_object, NumberFormat&
// 4. Assert: Type(mxfdDefault) is Number. // 4. Assert: Type(mxfdDefault) is Number.
// 5. Let mnid be ? GetNumberOption(options, "minimumIntegerDigits,", 1, 21, 1). // 5. Let mnid be ? GetNumberOption(options, "minimumIntegerDigits,", 1, 21, 1).
auto min_integer_digits = get_number_option(global_object, options, vm.names.minimumIntegerDigits, 1, 21, 1); auto min_integer_digits_or_error = get_number_option(global_object, options, vm.names.minimumIntegerDigits, 1, 21, 1);
if (vm.exception()) if (min_integer_digits_or_error.is_error())
return; return;
auto min_integer_digits = min_integer_digits_or_error.release_value();
// 6. Let mnfd be ? Get(options, "minimumFractionDigits"). // 6. Let mnfd be ? Get(options, "minimumFractionDigits").
auto min_fraction_digits = options.get(vm.names.minimumFractionDigits); auto min_fraction_digits = options.get(vm.names.minimumFractionDigits);