diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp index 58815a4d80..ceed329aa3 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp @@ -796,7 +796,7 @@ ThrowCompletionOr parse_iso_date_time(GlobalObject& global_object, } // 13.35 ParseTemporalInstantString ( isoString ), https://tc39.es/proposal-temporal/#sec-temporal-parsetemporalinstantstring -Optional parse_temporal_instant_string(GlobalObject& global_object, String const& iso_string) +ThrowCompletionOr parse_temporal_instant_string(GlobalObject& global_object, String const& iso_string) { auto& vm = global_object.vm(); @@ -811,8 +811,8 @@ Optional parse_temporal_instant_string(GlobalObject& global_obj // 4. Let timeZoneResult be ? ParseTemporalTimeZoneString(isoString). auto time_zone_result = parse_temporal_time_zone_string(global_object, iso_string); - if (vm.exception()) - return {}; + if (auto* exception = vm.exception()) + return throw_completion(exception->value()); // 5. Let offsetString be timeZoneResult.[[OffsetString]]. auto offset_string = time_zone_result->offset; diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h index 894ae7414e..77795a14b5 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h +++ b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h @@ -104,7 +104,7 @@ String format_seconds_string_part(u8 second, u16 millisecond, u16 microsecond, u double constrain_to_range(double x, double minimum, double maximum); BigInt* round_number_to_increment(GlobalObject&, BigInt const&, u64 increment, StringView rounding_mode); ThrowCompletionOr parse_iso_date_time(GlobalObject&, String const& iso_string); -Optional parse_temporal_instant_string(GlobalObject&, String const& iso_string); +ThrowCompletionOr parse_temporal_instant_string(GlobalObject&, String const& iso_string); Optional parse_temporal_calendar_string(GlobalObject&, String const& iso_string); Optional parse_temporal_date_string(GlobalObject&, String const& iso_string); Optional parse_temporal_date_time_string(GlobalObject&, String const& iso_string); diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Instant.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/Instant.cpp index 7e194666fd..70c3296730 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/Instant.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/Instant.cpp @@ -112,18 +112,16 @@ BigInt* parse_temporal_instant(GlobalObject& global_object, String const& iso_st // 1. Assert: Type(isoString) is String. // 2. Let result be ? ParseTemporalInstantString(isoString). - auto result = parse_temporal_instant_string(global_object, iso_string); - if (vm.exception()) - return {}; + auto result = TRY_OR_DISCARD(parse_temporal_instant_string(global_object, iso_string)); // 3. Let offsetString be result.[[TimeZoneOffsetString]]. - auto& offset_string = result->time_zone_offset; + auto& offset_string = result.time_zone_offset; // 4. Assert: offsetString is not undefined. VERIFY(offset_string.has_value()); // 5. Let utc be ? GetEpochFromISOParts(result.[[Year]], result.[[Month]], result.[[Day]], result.[[Hour]], result.[[Minute]], result.[[Second]], result.[[Millisecond]], result.[[Microsecond]], result.[[Nanosecond]]). - auto* utc = get_epoch_from_iso_parts(global_object, result->year, result->month, result->day, result->hour, result->minute, result->second, result->millisecond, result->microsecond, result->nanosecond); + auto* utc = get_epoch_from_iso_parts(global_object, result.year, result.month, result.day, result.hour, result.minute, result.second, result.millisecond, result.microsecond, result.nanosecond); if (vm.exception()) return {};