LibJS: Use the TimeDuration alias a bit less in Temporal

It was a bit of a semantic mistake too use this alias too eagerly.
Namely, it should not be used to refer to epoch nanoseconds. We now only
use the TimeDuration alias where the spec refers to a value as a time
duration.
This commit is contained in:
Timothy Flynn 2024-11-26 08:34:55 -05:00 committed by Tim Flynn
commit 2d9405e5d7
Notes: github-actions[bot] 2024-11-26 16:36:38 +00:00
4 changed files with 24 additions and 24 deletions

View file

@ -330,34 +330,34 @@ Time balance_time(double hour, double minute, double second, double millisecond,
}
// 4.5.10 BalanceTime ( hour, minute, second, millisecond, microsecond, nanosecond ), https://tc39.es/proposal-temporal/#sec-temporal-balancetime
Time balance_time(double hour, double minute, double second, double millisecond, double microsecond, TimeDuration const& nanosecond_value)
Time balance_time(double hour, double minute, double second, double millisecond, double microsecond, Crypto::SignedBigInteger const& nanosecond_value)
{
// 1. Set microsecond to microsecond + floor(nanosecond / 1000).
auto microsecond_value = TimeDuration { microsecond }.plus(big_floor(nanosecond_value, NANOSECONDS_PER_MICROSECOND));
auto microsecond_value = Crypto::SignedBigInteger { microsecond }.plus(big_floor(nanosecond_value, NANOSECONDS_PER_MICROSECOND));
// 2. Set nanosecond to nanosecond modulo 1000.
auto nanosecond = modulo(nanosecond_value, NANOSECONDS_PER_MICROSECOND).to_double();
// 3. Set millisecond to millisecond + floor(microsecond / 1000).
auto millisecond_value = TimeDuration { millisecond }.plus(big_floor(microsecond_value, MICROSECONDS_PER_MILLISECOND));
auto millisecond_value = Crypto::SignedBigInteger { millisecond }.plus(big_floor(microsecond_value, MICROSECONDS_PER_MILLISECOND));
// 4. Set microsecond to microsecond modulo 1000.
microsecond = modulo(microsecond_value, MICROSECONDS_PER_MILLISECOND).to_double();
// 5. Set second to second + floor(millisecond / 1000).
auto second_value = TimeDuration { second }.plus(big_floor(millisecond_value, MILLISECONDS_PER_SECOND));
auto second_value = Crypto::SignedBigInteger { second }.plus(big_floor(millisecond_value, MILLISECONDS_PER_SECOND));
// 6. Set millisecond to millisecond modulo 1000.
millisecond = modulo(millisecond_value, MILLISECONDS_PER_SECOND).to_double();
// 7. Set minute to minute + floor(second / 60).
auto minute_value = TimeDuration { minute }.plus(big_floor(second_value, SECONDS_PER_MINUTE));
auto minute_value = Crypto::SignedBigInteger { minute }.plus(big_floor(second_value, SECONDS_PER_MINUTE));
// 8. Set second to second modulo 60.
second = modulo(second_value, SECONDS_PER_MINUTE).to_double();
// 9. Set hour to hour + floor(minute / 60).
auto hour_value = TimeDuration { hour }.plus(big_floor(minute_value, MINUTES_PER_HOUR));
auto hour_value = Crypto::SignedBigInteger { hour }.plus(big_floor(minute_value, MINUTES_PER_HOUR));
// 10. Set minute to minute modulo 60.
minute = modulo(minute_value, MINUTES_PER_HOUR).to_double();