mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:27:44 +00:00
LibJS: Use TimeZoneMethods in GetOffsetNanosecondsFor
Update to the latest version of the spec which was refactored to use time zone methods record. This requires updating a whole bunch of callers to pass through a record too. This also ends up improving exceptions on a missing getOffsetNanosecondsFor method.
This commit is contained in:
parent
230ffc022c
commit
f95117f75d
22 changed files with 52 additions and 39 deletions
|
@ -81,13 +81,13 @@ ThrowCompletionOr<BigInt const*> interpret_iso_date_time_offset(VM& vm, i32 year
|
|||
VERIFY(offset_option.is_one_of("prefer"sv, "reject"sv));
|
||||
|
||||
// 7. Let possibleInstants be ? GetPossibleInstantsFor(timeZone, dateTime).
|
||||
auto time_zone_record = TRY(create_time_zone_methods_record(vm, NonnullGCPtr<Object> { time_zone.as_object() }, { { TimeZoneMethod::GetPossibleInstantsFor } }));
|
||||
auto time_zone_record = TRY(create_time_zone_methods_record(vm, NonnullGCPtr<Object> { time_zone.as_object() }, { { TimeZoneMethod::GetPossibleInstantsFor, TimeZoneMethod::GetOffsetNanosecondsFor } }));
|
||||
auto possible_instants = TRY(get_possible_instants_for(vm, time_zone_record, *date_time));
|
||||
|
||||
// 8. For each element candidate of possibleInstants, do
|
||||
for (auto candidate : possible_instants) {
|
||||
// a. Let candidateNanoseconds be ? GetOffsetNanosecondsFor(timeZone, candidate).
|
||||
auto candidate_nanoseconds = TRY(get_offset_nanoseconds_for(vm, time_zone, *candidate));
|
||||
auto candidate_nanoseconds = TRY(get_offset_nanoseconds_for(vm, time_zone_record, *candidate));
|
||||
|
||||
// b. If candidateNanoseconds = offsetNanoseconds, then
|
||||
if (candidate_nanoseconds == offset_nanoseconds) {
|
||||
|
@ -329,8 +329,10 @@ ThrowCompletionOr<String> temporal_zoned_date_time_to_string(VM& vm, ZonedDateTi
|
|||
}
|
||||
// 11. Else,
|
||||
else {
|
||||
auto time_zone_record = TRY(create_time_zone_methods_record(vm, NonnullGCPtr<Object> { time_zone }, { { TimeZoneMethod::GetOffsetNanosecondsFor } }));
|
||||
|
||||
// a. Let offsetNs be ? GetOffsetNanosecondsFor(timeZone, instant).
|
||||
auto offset_ns = TRY(get_offset_nanoseconds_for(vm, &time_zone, *instant));
|
||||
auto offset_ns = TRY(get_offset_nanoseconds_for(vm, time_zone_record, *instant));
|
||||
|
||||
// b. Let offsetString be ! FormatISOTimeZoneOffsetString(offsetNs).
|
||||
offset_string = MUST_OR_THROW_OOM(format_iso_time_zone_offset_string(vm, offset_ns));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue