Skip to content

Commit a5f6f8c

Browse files
committed
Remove RejectDurationSign abstract operation
This operation is only called on Duration fields that have just been returned by ToLimitedTemporalDuration, which calls ValidateTemporalDuration, so it never has any effect and is redundant everywhere it's used. See: #1411
1 parent c3f10a0 commit a5f6f8c

File tree

7 files changed

+2
-21
lines changed

7 files changed

+2
-21
lines changed

lib/ecmascript.mjs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3128,13 +3128,6 @@ export const ES = ObjectAssign({}, ES2020, {
31283128
ES.RejectToRange(month, 1, 9);
31293129
}
31303130
},
3131-
RejectDurationSign: (y, mon, w, d, h, min, s, ms, µs, ns) => {
3132-
const sign = ES.DurationSign(y, mon, w, d, h, min, s, ms, µs, ns);
3133-
for (const prop of [y, mon, w, d, h, min, s, ms, µs, ns]) {
3134-
const propSign = MathSign(prop);
3135-
if (propSign !== 0 && propSign !== sign) throw new RangeError('mixed-sign values not allowed as duration fields');
3136-
}
3137-
},
31383131
RejectDuration: (y, mon, w, d, h, min, s, ms, µs, ns) => {
31393132
const sign = ES.DurationSign(y, mon, w, d, h, min, s, ms, µs, ns);
31403133
for (const prop of [y, mon, w, d, h, min, s, ms, µs, ns]) {

lib/instant.mjs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ export class Instant {
6161
microseconds,
6262
nanoseconds
6363
} = ES.ToLimitedTemporalDuration(temporalDurationLike, ['years', 'months', 'weeks', 'days']);
64-
ES.RejectDurationSign(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
6564
const ns = ES.AddInstant(
6665
GetSlot(this, EPOCHNANOSECONDS),
6766
hours,
@@ -83,7 +82,6 @@ export class Instant {
8382
microseconds,
8483
nanoseconds
8584
} = ES.ToLimitedTemporalDuration(temporalDurationLike, ['years', 'months', 'weeks', 'days']);
86-
ES.RejectDurationSign(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
8785
const ns = ES.AddInstant(
8886
GetSlot(this, EPOCHNANOSECONDS),
8987
-hours,

lib/plaindate.mjs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,6 @@ export class PlainDate {
134134
options = ES.GetOptionsObject(options);
135135

136136
let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
137-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
138137
({ days } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 'days'));
139138
duration = { years, months, weeks, days };
140139
return ES.CalendarDateAdd(GetSlot(this, CALENDAR), this, duration, options);
@@ -146,7 +145,6 @@ export class PlainDate {
146145
options = ES.GetOptionsObject(options);
147146

148147
let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
149-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
150148
({ days } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 'days'));
151149
duration = { years: -years, months: -months, weeks: -weeks, days: -days };
152150
return ES.CalendarDateAdd(GetSlot(this, CALENDAR), this, duration, options);

lib/plaindatetime.mjs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ export class PlainDateTime {
288288
if (!ES.IsTemporalDateTime(this)) throw new TypeError('invalid receiver');
289289
let duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
290290
let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
291-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
292291
options = ES.GetOptionsObject(options);
293292
const calendar = GetSlot(this, CALENDAR);
294293
const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.AddDateTime(
@@ -331,7 +330,6 @@ export class PlainDateTime {
331330
if (!ES.IsTemporalDateTime(this)) throw new TypeError('invalid receiver');
332331
let duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
333332
let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
334-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
335333
options = ES.GetOptionsObject(options);
336334
const calendar = GetSlot(this, CALENDAR);
337335
const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.AddDateTime(

lib/plaintime.mjs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,7 @@ export class PlainTime {
157157
add(temporalDurationLike) {
158158
if (!ES.IsTemporalTime(this)) throw new TypeError('invalid receiver');
159159
const duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
160-
const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
161-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
160+
const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
162161
let hour = GetSlot(this, ISO_HOUR);
163162
let minute = GetSlot(this, ISO_MINUTE);
164163
let second = GetSlot(this, ISO_SECOND);
@@ -193,8 +192,7 @@ export class PlainTime {
193192
subtract(temporalDurationLike) {
194193
if (!ES.IsTemporalTime(this)) throw new TypeError('invalid receiver');
195194
let duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
196-
const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
197-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
195+
const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
198196
let hour = GetSlot(this, ISO_HOUR);
199197
let minute = GetSlot(this, ISO_MINUTE);
200198
let second = GetSlot(this, ISO_SECOND);

lib/plainyearmonth.mjs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ export class PlainYearMonth {
9494
if (!ES.IsTemporalYearMonth(this)) throw new TypeError('invalid receiver');
9595
const duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
9696
let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
97-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
9897
({ days } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 'days'));
9998

10099
options = ES.GetOptionsObject(options);
@@ -126,7 +125,6 @@ export class PlainYearMonth {
126125
nanoseconds: -duration.nanoseconds
127126
};
128127
let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
129-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
130128
({ days } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 'days'));
131129

132130
options = ES.GetOptionsObject(options);

lib/zoneddatetime.mjs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,6 @@ export class ZonedDateTime {
301301
if (!ES.IsTemporalZonedDateTime(this)) throw new TypeError('invalid receiver');
302302
const duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
303303
const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
304-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
305304
options = ES.GetOptionsObject(options);
306305
const timeZone = GetSlot(this, TIME_ZONE);
307306
const calendar = GetSlot(this, CALENDAR);
@@ -327,7 +326,6 @@ export class ZonedDateTime {
327326
if (!ES.IsTemporalZonedDateTime(this)) throw new TypeError('invalid receiver');
328327
const duration = ES.ToLimitedTemporalDuration(temporalDurationLike);
329328
const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;
330-
ES.RejectDurationSign(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);
331329
options = ES.GetOptionsObject(options);
332330
const timeZone = GetSlot(this, TIME_ZONE);
333331
const calendar = GetSlot(this, CALENDAR);

0 commit comments

Comments
 (0)