Skip to content

Commit 857bc8b

Browse files
committed
Fix failing tests
1 parent 7113e69 commit 857bc8b

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

src/builtins/core/duration.rs

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,19 @@ impl Duration {
106106
TimeDuration::new_unchecked(value, 0, 0, 0, 0, 0),
107107
)
108108
}
109+
110+
// /// `7.5.6 ToInternalDurationRecordWith24HourDays ( duration )`
111+
// ///
112+
// /// Spec: <https://tc39.es/proposal-temporal/#sec-temporal-tointernaldurationrecordwith24hourdays>
113+
// fn to_internal_record_with_24_hour_days(&self) -> NormalizedTimeDuration {
114+
// // 1. Let timeDuration be TimeDurationFromComponents(duration.[[Hours]], duration.[[Minutes]], duration.[[Seconds]], duration.[[Milliseconds]], duration.[[Microseconds]], duration.[[Nanoseconds]]).
115+
// let time_duration = self.time;
116+
117+
// // 2. Set timeDuration to ! Add24HourDaysToTimeDuration(timeDuration, duration.[[Days]]).
118+
// time_duration
119+
// // 3. Let dateDuration be ! CreateDateDurationRecord(duration.[[Years]], duration.[[Months]], duration.[[Weeks]], 0).
120+
// // 4. Return CombineDateAndTimeDuration(dateDuration, timeDuration).
121+
// }
109122
}
110123

111124
// ==== Private Creation methods ====
@@ -755,17 +768,24 @@ impl Duration {
755768
.add_normalized_time_duration(internal_duration.normalized_time_duration());
756769

757770
// c. Let calendar be plainRelativeTo.[[Calendar]].
758-
let calendar = plain_relative_to.calendar().clone();
771+
let calendar = plain_relative_to.calendar();
759772

760773
// d. Let dateDuration be ! AdjustDateDurationRecord(internalDuration.[[Date]], targetTime.[[Days]]).
761-
let date_duration = self.date.adjust(target_time_days, None, None)?;
774+
let date_duration =
775+
internal_duration
776+
.date()
777+
.adjust(target_time_days, None, None)?;
762778

763779
// e. Let targetDate be ? CalendarDateAdd(calendar, plainRelativeTo.[[ISODate]], dateDuration, constrain).
764-
let target_date = calendar.date_add(
765-
&plain_relative_to.iso,
780+
let target_date = plain_relative_to.add_date(
766781
&Duration::from(date_duration),
767-
ArithmeticOverflow::Constrain,
782+
Some(ArithmeticOverflow::Constrain),
768783
)?;
784+
// let target_date = calendar.date_add(
785+
// &plain_relative_to.iso,
786+
// &Duration::from(date_duration),
787+
// ArithmeticOverflow::Constrain,
788+
// )?;
769789

770790
// f. Let isoDateTime be CombineISODateAndTimeRecord(plainRelativeTo.[[ISODate]], MidnightTimeRecord()).
771791
let iso_date_time =
@@ -775,11 +795,12 @@ impl Duration {
775795
let target_date_time = IsoDateTime::new_unchecked(target_date.iso, target_time.iso);
776796

777797
// h. Set internalDuration to ? DifferencePlainDateTimeWithRounding(isoDateTime, targetDateTime, calendar, largestUnit, roundingIncrement, smallestUnit, roundingMode).
778-
let internal_duration = iso_date_time.diff(
779-
&target_date_time,
780-
&calendar,
781-
resolved_options.largest_unit,
782-
)?;
798+
let internal_duration =
799+
PlainDateTime::new_unchecked(iso_date_time, calendar.clone())
800+
.diff_dt_with_rounding(
801+
&PlainDateTime::new_unchecked(target_date_time, calendar.clone()),
802+
resolved_options,
803+
)?;
783804

784805
// i. Return ? TemporalDurationFromInternal(internalDuration, largestUnit).
785806
return Duration::from_normalized(internal_duration, resolved_options.largest_unit);

src/builtins/core/duration/normalized.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,9 @@ impl NormalizedDurationRecord {
254254
Ok(Self { date, norm })
255255
}
256256

257-
/// Equivalent of 7.5.6
257+
/// Equivalent of `7.5.6 ToInternalDurationRecordWith24HourDays ( duration )`
258+
///
259+
/// Spec: <https://tc39.es/proposal-temporal/#sec-temporal-tointernaldurationrecordwith24hourdays>
258260
pub(crate) fn from_duration_with_24_hour_days(duration: &Duration) -> TemporalResult<Self> {
259261
// 1. Let timeDuration be TimeDurationFromComponents(duration.[[Hours]], duration.[[Minutes]],
260262
// duration.[[Seconds]], duration.[[Milliseconds]], duration.[[Microseconds]], duration.[[Nanoseconds]]).

src/builtins/core/time.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ impl PlainTime {
105105
self.iso.is_valid()
106106
}
107107

108-
/// Specification equivalent to `AddTime`
108+
/// Specification equivalent to `4.5.15 AddTime ( time, timeDuration )`
109+
///
110+
/// Spec: <https://tc39.es/proposal-temporal/#sec-temporal-addtime>
109111
pub(crate) fn add_normalized_time_duration(&self, norm: NormalizedTimeDuration) -> (i64, Self) {
110112
// 1. Set second to second + NormalizedTimeDurationSeconds(norm).
111113
let second = i64::from(self.second()) + norm.seconds();

0 commit comments

Comments
 (0)