Skip to content

Commit a48838a

Browse files
anbaptomato
authored andcommitted
Normative: Perform a single "dateAdd" lookup for the remaining MoveRelativeDate calls
Add `dateAdd` to all remaining `MoveRelativeDate` calls.
1 parent 891060f commit a48838a

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

spec/duration.html

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1319,32 +1319,34 @@ <h1>
13191319
1. Else if _largestUnit_ is *"week"*, then
13201320
1. If _calendar_ is *undefined*, then
13211321
1. Throw a *RangeError* exception.
1322+
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
13221323
1. Repeat, while _years_ &ne; 0,
1323-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_).
1324+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_, _dateAdd_).
13241325
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
13251326
1. Set _days_ to _days_ + _moveResult_.[[Days]].
13261327
1. Set _years_ to _years_ - _sign_.
13271328
1. Repeat, while _months_ &ne; 0,
1328-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_).
1329+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_, _dateAdd_).
13291330
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
13301331
1. Set _days_ to _days_ + _moveResult_.[[Days]].
13311332
1. Set _months_ to _months_ - _sign_.
13321333
1. Else,
13331334
1. If any of _years_, _months_, and _weeks_ are not zero, then
13341335
1. If _calendar_ is *undefined*, then
13351336
1. Throw a *RangeError* exception.
1337+
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
13361338
1. Repeat, while _years_ &ne; 0,
1337-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_).
1339+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_, _dateAdd_).
13381340
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
13391341
1. Set _days_ to _days_ + _moveResult_.[[Days]].
13401342
1. Set _years_ to _years_ - _sign_.
13411343
1. Repeat, while _months_ &ne; 0,
1342-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_).
1344+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_, _dateAdd_).
13431345
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
13441346
1. Set _days_ to _days_ +_moveResult_.[[Days]].
13451347
1. Set _months_ to _months_ - _sign_.
13461348
1. Repeat, while _weeks_ &ne; 0,
1347-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_).
1349+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_, _dateAdd_).
13481350
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
13491351
1. Set _days_ to _days_ + _moveResult_.[[Days]].
13501352
1. Set _weeks_ to _weeks_ - _sign_.
@@ -1380,27 +1382,27 @@ <h1>
13801382
1. Set _relativeTo_ to ? ToTemporalDate(_relativeTo_).
13811383
1. Let _calendar_ be _relativeTo_.[[Calendar]].
13821384
1. If _largestUnit_ is *"year"*, then
1383-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_).
1385+
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
1386+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_, _dateAdd_).
13841387
1. Let _newRelativeTo_ be _moveResult_.[[RelativeTo]].
13851388
1. Let _oneYearDays_ be _moveResult_.[[Days]].
13861389
1. Repeat, while abs(_days_) &ge; abs(_oneYearDays_),
13871390
1. Set _days_ to _days_ - _oneYearDays_.
13881391
1. Set _years_ to _years_ + _sign_.
13891392
1. Set _relativeTo_ to _newRelativeTo_.
1390-
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_).
1393+
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneYear_, _dateAdd_).
13911394
1. Set _newRelativeTo_ to _moveResult_.[[RelativeTo]].
13921395
1. Set _oneYearDays_ to _moveResult_.[[Days]].
1393-
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_).
1396+
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_, _dateAdd_).
13941397
1. Set _newRelativeTo_ to _moveResult_.[[RelativeTo]].
13951398
1. Let _oneMonthDays_ be _moveResult_.[[Days]].
13961399
1. Repeat, while abs(_days_) &ge; abs(_oneMonthDays_),
13971400
1. Set _days_ to _days_ - _oneMonthDays_.
13981401
1. Set _months_ to _months_ + _sign_.
13991402
1. Set _relativeTo_ to _newRelativeTo_.
1400-
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_).
1403+
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_, _dateAdd_).
14011404
1. Set _newRelativeTo_ to _moveResult_.[[RelativeTo]].
14021405
1. Set _oneMonthDays_ to _moveResult_.[[Days]].
1403-
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
14041406
1. Set _newRelativeTo_ to ? CalendarDateAdd(_calendar_, _relativeTo_, _oneYear_, *undefined*, _dateAdd_).
14051407
1. Let _dateUntil_ be ? GetMethod(_calendar_, *"dateUntil"*).
14061408
1. Let _untilOptions_ be OrdinaryObjectCreate(*null*).
@@ -1417,26 +1419,28 @@ <h1>
14171419
1. Set _untilResult_ to ? CalendarDateUntil(_calendar_, _relativeTo_, _newRelativeTo_, _untilOptions_, _dateUntil_).
14181420
1. Set _oneYearMonths_ to _untilResult_.[[Months]].
14191421
1. Else if _largestUnit_ is *"month"*, then
1420-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_).
1422+
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
1423+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_, _dateAdd_).
14211424
1. Let _newRelativeTo_ be _moveResult_.[[RelativeTo]].
14221425
1. Let _oneMonthDays_ be _moveResult_.[[Days]].
14231426
1. Repeat, while abs(_days_) &ge; abs(_oneMonthDays_),
14241427
1. Set _days_ to _days_ - _oneMonthDays_.
14251428
1. Set _months_ to _months_ + _sign_.
14261429
1. Set _relativeTo_ to _newRelativeTo_.
1427-
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_).
1430+
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneMonth_, _dateAdd_).
14281431
1. Set _newRelativeTo_ to _moveResult_.[[RelativeTo]].
14291432
1. Set _oneMonthDays_ to _moveResult_.[[Days]].
14301433
1. Else,
14311434
1. Assert: _largestUnit_ is *"week"*.
1432-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_).
1435+
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
1436+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_, _dateAdd_).
14331437
1. Let _newRelativeTo_ be _moveResult_.[[RelativeTo]].
14341438
1. Let _oneWeekDays_ be _moveResult_.[[Days]].
14351439
1. Repeat, while abs(_days_) &ge; abs(_oneWeekDays_),
14361440
1. Set _days_ to _days_ - _oneWeekDays_.
14371441
1. Set _weeks_ to _weeks_ + _sign_.
14381442
1. Set _relativeTo_ to _newRelativeTo_.
1439-
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_).
1443+
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_, _dateAdd_).
14401444
1. Set _newRelativeTo_ to _moveResult_.[[RelativeTo]].
14411445
1. Set _oneWeekDays_ to _moveResult_.[[Days]].
14421446
1. Return ! CreateDateDurationRecord(_years_, _months_, _weeks_, _days_).
@@ -1679,13 +1683,14 @@ <h1>
16791683
1. Else if _unit_ is *"week"*, then
16801684
1. If _days_ &lt; 0, let _sign_ be -1; else, let _sign_ be 1.
16811685
1. Let _oneWeek_ be ! CreateTemporalDuration(0, 0, _sign_, 0, 0, 0, 0, 0, 0, 0).
1682-
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_).
1686+
1. Let _dateAdd_ be ? GetMethod(_calendar_, *"dateAdd"*).
1687+
1. Let _moveResult_ be ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_, _dateAdd_).
16831688
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
16841689
1. Let _oneWeekDays_ be _moveResult_.[[Days]].
16851690
1. Repeat, while abs(_days_) &ge; abs(_oneWeekDays_),
16861691
1. Set _weeks_ to _weeks_ + _sign_.
16871692
1. Set _days_ to _days_ - _oneWeekDays_.
1688-
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_).
1693+
1. Set _moveResult_ to ? MoveRelativeDate(_calendar_, _relativeTo_, _oneWeek_, _dateAdd_).
16891694
1. Set _relativeTo_ to _moveResult_.[[RelativeTo]].
16901695
1. Set _oneWeekDays_ to _moveResult_.[[Days]].
16911696
1. Let _fractionalWeeks_ be _weeks_ + _days_ / abs(_oneWeekDays_).

0 commit comments

Comments
 (0)