diff options
author | Linus Groh <mail@linusgroh.de> | 2022-02-09 09:42:59 +0000 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-02-09 12:25:27 +0000 |
commit | 1d32ac7b8b8c18e5da4ba9fa7da47ea812bd99b4 (patch) | |
tree | a748a39775fd1abbd0f0310597b11bee4372b5c9 /Userland/Libraries/LibJS/Runtime/Temporal | |
parent | af7003ebd24cf4f3a4d083f62bc1caff564b6128 (diff) | |
download | serenity-1d32ac7b8b8c18e5da4ba9fa7da47ea812bd99b4.zip |
LibJS: Convert get_iana_time_zone_epoch_value() to MarkedVector<BigInt*>
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/Temporal')
3 files changed, 4 insertions, 5 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp index 71da4456bb..a71dad6008 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp @@ -144,15 +144,14 @@ ISODateTime get_iso_parts_from_epoch(BigInt const& epoch_nanoseconds) } // 11.6.3 GetIANATimeZoneEpochValue ( timeZoneIdentifier, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond ), https://tc39.es/proposal-temporal/#sec-temporal-getianatimezoneepochvalue -MarkedValueList get_iana_time_zone_epoch_value(GlobalObject& global_object, [[maybe_unused]] StringView time_zone_identifier, i32 year, u8 month, u8 day, u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond) +MarkedVector<BigInt*> get_iana_time_zone_epoch_value(GlobalObject& global_object, [[maybe_unused]] StringView time_zone_identifier, i32 year, u8 month, u8 day, u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond) { // The abstract operation GetIANATimeZoneEpochValue is an implementation-defined algorithm that returns a List of integers. Each integer in the List represents a number of nanoseconds since the Unix epoch in UTC that may correspond to the given calendar date and wall-clock time in the IANA time zone identified by timeZoneIdentifier. // When the input represents a local time repeating multiple times at a negative time zone transition (e.g. when the daylight saving time ends or the time zone offset is decreased due to a time zone rule change), the returned List will have more than one element. When the input represents a skipped local time at a positive time zone transition (e.g. when the daylight saving time starts or the time zone offset is increased due to a time zone rule change), the returned List will be empty. Otherwise, the returned List will have one element. // FIXME: Implement this properly for non-UTC timezones. - // FIXME: MarkedValueList<T> for T != Value would still be nice. auto& vm = global_object.vm(); - auto list = MarkedValueList { vm.heap() }; + auto list = MarkedVector<BigInt*> { vm.heap() }; list.append(get_epoch_from_iso_parts(global_object, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond)); return list; } diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h index 2b800e87ca..500a11b7c9 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h +++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h @@ -42,7 +42,7 @@ String default_time_zone(); ThrowCompletionOr<String> parse_temporal_time_zone(GlobalObject&, String const&); ThrowCompletionOr<TimeZone*> create_temporal_time_zone(GlobalObject&, String const& identifier, FunctionObject const* new_target = nullptr); ISODateTime get_iso_parts_from_epoch(BigInt const& epoch_nanoseconds); -MarkedValueList get_iana_time_zone_epoch_value(GlobalObject&, StringView time_zone_identifier, i32 year, u8 month, u8 day, u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond); +MarkedVector<BigInt*> get_iana_time_zone_epoch_value(GlobalObject&, StringView time_zone_identifier, i32 year, u8 month, u8 day, u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond); i64 get_iana_time_zone_offset_nanoseconds(BigInt const& epoch_nanoseconds, String const& time_zone_identifier); BigInt* get_iana_time_zone_next_transition(GlobalObject&, BigInt const& epoch_nanoseconds, StringView time_zone_identifier); BigInt* get_iana_time_zone_previous_transition(GlobalObject&, BigInt const& epoch_nanoseconds, StringView time_zone_identifier); diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.cpp index 0b338ab873..9666281e82 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.cpp @@ -156,7 +156,7 @@ JS_DEFINE_NATIVE_FUNCTION(TimeZonePrototype::get_possible_instants_for) // 7. For each value epochNanoseconds in possibleEpochNanoseconds, do for (auto& epoch_nanoseconds : possible_epoch_nanoseconds) { // a. Let instant be ! CreateTemporalInstant(epochNanoseconds). - auto* instant = MUST(create_temporal_instant(global_object, epoch_nanoseconds.as_bigint())); + auto* instant = MUST(create_temporal_instant(global_object, *epoch_nanoseconds)); // b. Append instant to possibleInstants. possible_instants.append(instant); |