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

LibJS: Mark PartitionDurationFormatPattern as infallible

This is an editorial change in the Intl.DurationFormat proposal. See:
cea3b68
This commit is contained in:
Timothy Flynn 2022-08-30 11:16:38 -04:00 committed by Tim Flynn
parent aabd06722f
commit a28ff92106
3 changed files with 9 additions and 8 deletions

View file

@ -305,7 +305,7 @@ static String convert_number_format_pattern_to_duration_format_template(Unicode:
} }
// 1.1.7 PartitionDurationFormatPattern ( durationFormat, duration ), https://tc39.es/proposal-intl-duration-format/#sec-partitiondurationformatpattern // 1.1.7 PartitionDurationFormatPattern ( durationFormat, duration ), https://tc39.es/proposal-intl-duration-format/#sec-partitiondurationformatpattern
ThrowCompletionOr<Vector<PatternPartition>> partition_duration_format_pattern(VM& vm, DurationFormat const& duration_format, Temporal::DurationRecord const& duration) Vector<PatternPartition> partition_duration_format_pattern(VM& vm, DurationFormat const& duration_format, Temporal::DurationRecord const& duration)
{ {
auto& realm = *vm.current_realm(); auto& realm = *vm.current_realm();
@ -491,8 +491,8 @@ ThrowCompletionOr<Vector<PatternPartition>> partition_duration_format_pattern(VM
} }
} }
// 4. Let lf be ? Construct(%ListFormat%, « durationFormat.[[Locale]] »). // 4. Let lf be ! Construct(%ListFormat%, « durationFormat.[[Locale]] »).
auto* list_format = static_cast<ListFormat*>(TRY(construct(vm, *realm.intrinsics().intl_list_format_constructor(), js_string(vm, duration_format.locale())))); auto* list_format = static_cast<ListFormat*>(MUST(construct(vm, *realm.intrinsics().intl_list_format_constructor(), js_string(vm, duration_format.locale()))));
// FIXME: CreatePartsFromList expects a list of strings and creates a list of Pattern Partition records, but we already created a list of Pattern Partition records // FIXME: CreatePartsFromList expects a list of strings and creates a list of Pattern Partition records, but we already created a list of Pattern Partition records
// so we try to hack something together from it that looks mostly right // so we try to hack something together from it that looks mostly right

View file

@ -224,6 +224,6 @@ ThrowCompletionOr<Temporal::DurationRecord> to_duration_record(VM&, Value input)
i8 duration_sign(Temporal::DurationRecord const&); i8 duration_sign(Temporal::DurationRecord const&);
bool is_valid_duration_record(Temporal::DurationRecord const&); bool is_valid_duration_record(Temporal::DurationRecord const&);
ThrowCompletionOr<DurationUnitOptions> get_duration_unit_options(VM&, String const& unit, Object const& options, StringView base_style, Span<StringView const> styles_list, StringView digital_base, StringView previous_style); ThrowCompletionOr<DurationUnitOptions> get_duration_unit_options(VM&, String const& unit, Object const& options, StringView base_style, Span<StringView const> styles_list, StringView digital_base, StringView previous_style);
ThrowCompletionOr<Vector<PatternPartition>> partition_duration_format_pattern(VM&, DurationFormat const&, Temporal::DurationRecord const& duration); Vector<PatternPartition> partition_duration_format_pattern(VM&, DurationFormat const&, Temporal::DurationRecord const& duration);
} }

View file

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2022, Idan Horowitz <idan.horowitz@serenityos.org> * Copyright (c) 2022, Idan Horowitz <idan.horowitz@serenityos.org>
* Copyright (c) 2022, Tim Flynn <trflynn89@serenityos.org>
* *
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
*/ */
@ -45,8 +46,8 @@ JS_DEFINE_NATIVE_FUNCTION(DurationFormatPrototype::format)
if (!is_valid_duration_record(record)) if (!is_valid_duration_record(record))
return vm.throw_completion<RangeError>(ErrorType::TemporalInvalidDurationLikeObject); return vm.throw_completion<RangeError>(ErrorType::TemporalInvalidDurationLikeObject);
// 5. Let formatted be ? PartitionDurationFormatPattern(df, record). // 5. Let formatted be ! PartitionDurationFormatPattern(df, record).
auto formatted = TRY(partition_duration_format_pattern(vm, *duration_format, record)); auto formatted = partition_duration_format_pattern(vm, *duration_format, record);
// 6. Let result be a new empty String. // 6. Let result be a new empty String.
StringBuilder result; StringBuilder result;
@ -77,8 +78,8 @@ JS_DEFINE_NATIVE_FUNCTION(DurationFormatPrototype::format_to_parts)
if (!is_valid_duration_record(record)) if (!is_valid_duration_record(record))
return vm.throw_completion<RangeError>(ErrorType::TemporalInvalidDurationLikeObject); return vm.throw_completion<RangeError>(ErrorType::TemporalInvalidDurationLikeObject);
// 5. Let formatted be ? PartitionDurationFormatPattern(df, record). // 5. Let formatted be ! PartitionDurationFormatPattern(df, record).
auto formatted = TRY(partition_duration_format_pattern(vm, *duration_format, record)); auto formatted = partition_duration_format_pattern(vm, *duration_format, record);
// 6. Let result be ! ArrayCreate(0). // 6. Let result be ! ArrayCreate(0).
auto* result = MUST(Array::create(realm, 0)); auto* result = MUST(Array::create(realm, 0));