Skip to content

Commit 41f2072

Browse files
committed
Editorial: Return Time Record from ToTemporalTimeOrMidnight, and rename
This avoids creation of an unobservable Temporal.PlainTime object, and is also simpler to read. Since it no longer returns a Temporal object, give it a more appropriate name. UPSTREAM_COMMIT=dd9679fea7db0130738cf8636b47d2eb67e4afe9
1 parent 645ccfc commit 41f2072

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

lib/ecmascript.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,10 +1687,9 @@ export function ToTemporalTime(item: PlainTimeParams['from'][0], options?: Plain
16871687
return CreateTemporalTime(time);
16881688
}
16891689

1690-
export function ToTemporalTimeOrMidnight(item: string | Temporal.PlainTime | Temporal.PlainTimeLike | undefined) {
1691-
const TemporalPlainTime = GetIntrinsic('%Temporal.PlainTime%');
1692-
if (item === undefined) return new TemporalPlainTime();
1693-
return ToTemporalTime(item);
1690+
export function ToTimeRecordOrMidnight(item: PlainTimeParams['from'][0] | undefined) {
1691+
if (item === undefined) return MidnightTimeRecord();
1692+
return GetSlot(ToTemporalTime(item), TIME);
16941693
}
16951694

16961695
export function ToTemporalYearMonth(

lib/plaindate.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,10 @@ export class PlainDate implements Temporal.PlainDate {
173173
valueOf(): never {
174174
ES.ValueOfThrows('PlainDate');
175175
}
176-
toPlainDateTime(temporalTimeParam: Params['toPlainDateTime'][0] = undefined): Return['toPlainDateTime'] {
176+
toPlainDateTime(temporalTime: Params['toPlainDateTime'][0] = undefined): Return['toPlainDateTime'] {
177177
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
178-
const temporalTime = ES.ToTemporalTimeOrMidnight(temporalTimeParam);
179-
const isoDateTime = ES.CombineISODateAndTimeRecord(GetSlot(this, ISO_DATE), GetSlot(temporalTime, TIME));
178+
const time = ES.ToTimeRecordOrMidnight(temporalTime);
179+
const isoDateTime = ES.CombineISODateAndTimeRecord(GetSlot(this, ISO_DATE), time);
180180
return ES.CreateTemporalDateTime(isoDateTime, GetSlot(this, CALENDAR));
181181
}
182182
toZonedDateTime(item: Params['toZonedDateTime'][0]): Return['toZonedDateTime'] {

lib/plaindatetime.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { RangeError as RangeErrorCtor, TypeError as TypeErrorCtor } from './prim
33
import * as ES from './ecmascript';
44
import { MakeIntrinsicClass } from './intrinsicclass';
55

6-
import { CALENDAR, GetSlot, ISO_DATE_TIME, TIME } from './slots';
6+
import { CALENDAR, GetSlot, ISO_DATE_TIME } from './slots';
77
import type { Temporal } from '..';
88
import { DateTimeFormat } from './intl';
99
import type { PlainDateTimeParams as Params, PlainDateTimeReturn as Return } from './internaltypes';
@@ -174,13 +174,10 @@ export class PlainDateTime implements Temporal.PlainDateTime {
174174
const newDateTime = ES.InterpretTemporalDateTimeFields(calendar, fields, overflow);
175175
return ES.CreateTemporalDateTime(newDateTime, calendar);
176176
}
177-
withPlainTime(temporalTimeParam: Params['withPlainTime'][0] = undefined): Return['withPlainTime'] {
177+
withPlainTime(temporalTime: Params['withPlainTime'][0] = undefined): Return['withPlainTime'] {
178178
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
179-
const temporalTime = ES.ToTemporalTimeOrMidnight(temporalTimeParam);
180-
const isoDateTime = ES.CombineISODateAndTimeRecord(
181-
GetSlot(this, ISO_DATE_TIME).isoDate,
182-
GetSlot(temporalTime, TIME)
183-
);
179+
const time = ES.ToTimeRecordOrMidnight(temporalTime);
180+
const isoDateTime = ES.CombineISODateAndTimeRecord(GetSlot(this, ISO_DATE_TIME).isoDate, time);
184181
return ES.CreateTemporalDateTime(isoDateTime, GetSlot(this, CALENDAR));
185182
}
186183
withCalendar(calendarParam: Params['withCalendar'][0]): Return['withCalendar'] {

0 commit comments

Comments
 (0)