Skip to content

Commit a5040b7

Browse files
committed
Polyfill: Refactor GetIntrinsic('%calendarImpl%')(calendar) into function
More hacks to deal with avoiding the circular import between calendar.mjs and ecmascript.mjs. UPSTREAM_COMMIT=b0e9b3a35313c6128b1fa122f12b6312999f7902
1 parent 75e8538 commit a5040b7

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

lib/ecmascript.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,10 @@ export function TemporalObjectToFields(
13471347
return ISODateToFields(calendar, isoDate, type);
13481348
}
13491349

1350+
function calendarImplForID(calendar: BuiltinCalendarId) {
1351+
return GetIntrinsic('%calendarImpl%')(calendar);
1352+
}
1353+
13501354
export function calendarImplForObj(
13511355
temporalObj:
13521356
| Temporal.PlainDate
@@ -1372,7 +1376,7 @@ export function ISODateToFields<T extends ISODateToFieldsType>(
13721376
): ISODateToFieldsReturn<T>;
13731377
export function ISODateToFields(calendar: BuiltinCalendarId, isoDate: ISODate, type = 'date') {
13741378
const fields = ObjectCreate(null);
1375-
const calendarImpl = GetIntrinsic('%calendarImpl%')(calendar);
1379+
const calendarImpl = calendarImplForID(calendar);
13761380
const calendarDate = calendarImpl.isoToDate(isoDate, { year: true, monthCode: true, day: true });
13771381

13781382
fields.monthCode = calendarDate.monthCode;
@@ -1416,7 +1420,7 @@ export function PrepareCalendarFields<
14161420
nonCalendarFieldNames: Array<FieldKeys>,
14171421
requiredFields: RequiredFields
14181422
): PrepareCalendarFieldsReturn<FieldKeys, RequiredFields> {
1419-
const extraFieldNames = GetIntrinsic('%calendarImpl%')(calendar).extraFields();
1423+
const extraFieldNames = calendarImplForID(calendar).extraFields();
14201424
const fields: FieldKeys[] = Call(ArrayPrototypeConcat, calendarFieldNames, [nonCalendarFieldNames, extraFieldNames]);
14211425
const result: Partial<Record<AnyTemporalKey, unknown>> = ObjectCreate(null);
14221426
let any = false;
@@ -2255,7 +2259,7 @@ export function CalendarMergeFields<Base extends Record<string, unknown>, ToAdd
22552259
additionalFields: ToAdd
22562260
) {
22572261
const additionalKeys = CalendarFieldKeysPresent(additionalFields);
2258-
const overriddenKeys = GetIntrinsic('%calendarImpl%')(calendar).fieldKeysToIgnore(additionalKeys);
2262+
const overriddenKeys = calendarImplForID(calendar).fieldKeysToIgnore(additionalKeys);
22592263
const merged = ObjectCreate(null);
22602264
const fieldsKeys = CalendarFieldKeysPresent(fields);
22612265
for (let ix = 0; ix < CALENDAR_FIELD_KEYS.length; ix++) {
@@ -2278,7 +2282,7 @@ export function CalendarDateAdd(
22782282
dateDuration: Partial<DateDuration>,
22792283
overflow: Overflow
22802284
) {
2281-
const result = GetIntrinsic('%calendarImpl%')(calendar).dateAdd(isoDate, dateDuration, overflow);
2285+
const result = calendarImplForID(calendar).dateAdd(isoDate, dateDuration, overflow);
22822286
RejectDateRange(result.year, result.month, result.day);
22832287
return result;
22842288
}
@@ -2289,7 +2293,7 @@ function CalendarDateUntil(
22892293
isoOtherDate: ISODate,
22902294
largestUnit: Temporal.DateUnit
22912295
) {
2292-
return GetIntrinsic('%calendarImpl%')(calendar).dateUntil(isoDate, isoOtherDate, largestUnit);
2296+
return calendarImplForID(calendar).dateUntil(isoDate, isoOtherDate, largestUnit);
22932297
}
22942298

22952299
export function ToTemporalCalendarIdentifier(calendarLike: Temporal.CalendarLike): BuiltinCalendarId {
@@ -2329,7 +2333,7 @@ export function CalendarEquals(one: BuiltinCalendarId, two: BuiltinCalendarId) {
23292333
}
23302334

23312335
export function CalendarDateFromFields(calendar: BuiltinCalendarId, fields: CalendarFieldsRecord, overflow: Overflow) {
2332-
const calendarImpl: CalendarImpl = GetIntrinsic('%calendarImpl%')(calendar);
2336+
const calendarImpl: CalendarImpl = calendarImplForID(calendar);
23332337
calendarImpl.resolveFields(fields, 'date');
23342338
const result = calendarImpl.dateToISO(fields, overflow);
23352339
RejectDateRange(result.year, result.month, result.day);
@@ -2341,7 +2345,7 @@ export function CalendarYearMonthFromFields(
23412345
fields: CalendarFieldsRecord,
23422346
overflow: Overflow
23432347
) {
2344-
const calendarImpl: CalendarImpl = GetIntrinsic('%calendarImpl%')(calendar);
2348+
const calendarImpl: CalendarImpl = calendarImplForID(calendar);
23452349
calendarImpl.resolveFields(fields, 'year-month');
23462350
fields.day = 1;
23472351
const result = calendarImpl.dateToISO(fields, overflow);
@@ -2354,7 +2358,7 @@ export function CalendarMonthDayFromFields(
23542358
fields: MonthDayFromFieldsObject,
23552359
overflow: Overflow
23562360
) {
2357-
const calendarImpl: CalendarImpl = GetIntrinsic('%calendarImpl%')(calendar);
2361+
const calendarImpl: CalendarImpl = calendarImplForID(calendar);
23582362
calendarImpl.resolveFields(fields, 'month-day');
23592363
return calendarImpl.monthDayToISOReferenceDate(fields, overflow);
23602364
}

0 commit comments

Comments
 (0)