Skip to content

Commit e029b9c

Browse files
ptomato12wrigja
authored andcommitted
Implement dateAdd as parameter to MoveRelativeDate
This implements the normative change from "Normative: Add optional `dateAdd` parameter to MoveRelativeDate" in the reference code. It eliminates observable Gets of the calendar's dateAdd property each time MoveRelativeDate is called. UPSTREAM_COMMIT=3b1f69a214c5f31e34aebee6043817390e94f2e1
1 parent 668cea1 commit e029b9c

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lib/ecmascript.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5480,9 +5480,10 @@ function DaysUntil(
54805480
function MoveRelativeDate(
54815481
calendar: Temporal.CalendarProtocol,
54825482
relativeToParam: NonNullable<ReturnType<typeof ToRelativeTemporalObject>>,
5483-
duration: Temporal.Duration
5483+
duration: Temporal.Duration,
5484+
dateAdd = calendar.dateAdd
54845485
) {
5485-
const later = CalendarDateAdd(calendar, relativeToParam, duration, undefined);
5486+
const later = CalendarDateAdd(calendar, relativeToParam, duration, undefined, dateAdd);
54865487
const days = DaysUntil(relativeToParam, later);
54875488
return { relativeTo: later, days };
54885489
}
@@ -5736,7 +5737,7 @@ export function RoundDuration(
57365737
const daysPassed = DaysUntil(oldRelativeTo, relativeTo);
57375738
days -= daysPassed;
57385739
const oneYear = new TemporalDuration(days < 0 ? -1 : 1);
5739-
let { days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear);
5740+
let { days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear, dateAdd);
57405741

57415742
// Note that `nanoseconds` below (here and in similar code for months,
57425743
// weeks, and days further below) isn't actually nanoseconds for the
@@ -5784,11 +5785,11 @@ export function RoundDuration(
57845785
const sign = MathSign(days);
57855786
const oneMonth = new TemporalDuration(0, days < 0 ? -1 : 1);
57865787
let oneMonthDays: number;
5787-
({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));
5788+
({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth, dateAdd));
57885789
while (MathAbs(days) >= MathAbs(oneMonthDays)) {
57895790
months += sign;
57905791
days -= oneMonthDays;
5791-
({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));
5792+
({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth, dateAdd));
57925793
}
57935794
oneMonthDays = MathAbs(oneMonthDays);
57945795
// dayLengthNs is never undefined if unit is `day` or larger.

0 commit comments

Comments
 (0)