Skip to content

Commit 9349be3

Browse files
committed
Editorial: Remove individual AOs for each calendar field
These were all one line now, and should just call CalendarISOToDate. See: #2948
1 parent 0363a3b commit 9349be3

14 files changed

+129
-421
lines changed

polyfill/lib/calendar.mjs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1986,10 +1986,9 @@ impl['buddhist'] = ObjectAssign({}, nonIsoGeneralImpl, { helper: helperBuddhist
19861986
impl['japanese'] = ObjectAssign({}, nonIsoGeneralImpl, { helper: helperJapanese });
19871987
impl['gregory'] = ObjectAssign({}, nonIsoGeneralImpl, { helper: helperGregory });
19881988

1989-
function calendarImpl(calendar) {
1989+
export function calendarImpl(calendar) {
19901990
return impl[calendar];
19911991
}
19921992
// Probably not what the intrinsics mechanism was intended for, but view this as
1993-
// an export of calendarImpl while avoiding circular dependencies
1993+
// an export of calendarImpl to ecmascript.mjs that avoids circular dependencies
19941994
DefineIntrinsic('calendarImpl', calendarImpl);
1995-
DefineIntrinsic('calendarDateWeekOfYear', calendarDateWeekOfYear);

polyfill/lib/ecmascript.mjs

+6-63
Original file line numberDiff line numberDiff line change
@@ -1084,12 +1084,15 @@ export function TemporalObjectToFields(temporalObject) {
10841084

10851085
export function ISODateToFields(calendar, isoDate, type = 'date') {
10861086
const fields = ObjectCreate(null);
1087-
fields.monthCode = CalendarMonthCode(calendar, isoDate);
1087+
const calendarImpl = GetIntrinsic('%calendarImpl%')(calendar);
1088+
const calendarDate = calendarImpl.isoToDate(isoDate, { year: true, monthCode: true, day: true });
1089+
1090+
fields.monthCode = calendarDate.monthCode;
10881091
if (type === 'month-day' || type === 'date') {
1089-
fields.day = CalendarDay(calendar, isoDate);
1092+
fields.day = calendarDate.day;
10901093
}
10911094
if (type === 'year-month' || type === 'date') {
1092-
fields.year = CalendarYear(calendar, isoDate);
1095+
fields.year = calendarDate.year;
10931096
}
10941097
return fields;
10951098
}
@@ -1861,66 +1864,6 @@ export function CalendarDateUntil(calendar, isoDate, isoOtherDate, largestUnit)
18611864
return GetIntrinsic('%calendarImpl%')(calendar).dateUntil(isoDate, isoOtherDate, largestUnit);
18621865
}
18631866

1864-
export function CalendarYear(calendar, isoDate) {
1865-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { year: true }).year;
1866-
}
1867-
1868-
export function CalendarMonth(calendar, isoDate) {
1869-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { month: true }).month;
1870-
}
1871-
1872-
export function CalendarMonthCode(calendar, isoDate) {
1873-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { monthCode: true }).monthCode;
1874-
}
1875-
1876-
export function CalendarDay(calendar, isoDate) {
1877-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { day: true }).day;
1878-
}
1879-
1880-
export function CalendarEra(calendar, isoDate) {
1881-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { era: true }).era;
1882-
}
1883-
1884-
export function CalendarEraYear(calendar, isoDate) {
1885-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { eraYear: true }).eraYear;
1886-
}
1887-
1888-
export function CalendarDayOfWeek(calendar, isoDate) {
1889-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { dayOfWeek: true }).dayOfWeek;
1890-
}
1891-
1892-
export function CalendarDayOfYear(calendar, isoDate) {
1893-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { dayOfYear: true }).dayOfYear;
1894-
}
1895-
1896-
export function CalendarWeekOfYear(calendar, isoDate) {
1897-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { weekOfYear: true }).weekOfYear.week;
1898-
}
1899-
1900-
export function CalendarYearOfWeek(calendar, isoDate) {
1901-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { weekOfYear: true }).weekOfYear.year;
1902-
}
1903-
1904-
export function CalendarDaysInWeek(calendar, isoDate) {
1905-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { daysInWeek: true }).daysInWeek;
1906-
}
1907-
1908-
export function CalendarDaysInMonth(calendar, isoDate) {
1909-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { daysInMonth: true }).daysInMonth;
1910-
}
1911-
1912-
export function CalendarDaysInYear(calendar, isoDate) {
1913-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { daysInYear: true }).daysInYear;
1914-
}
1915-
1916-
export function CalendarMonthsInYear(calendar, isoDate) {
1917-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { monthsInYear: true }).monthsInYear;
1918-
}
1919-
1920-
export function CalendarInLeapYear(calendar, isoDate) {
1921-
return GetIntrinsic('%calendarImpl%')(calendar).isoToDate(isoDate, { inLeapYear: true }).inLeapYear;
1922-
}
1923-
19241867
export function ToTemporalCalendarIdentifier(calendarLike) {
19251868
if (Type(calendarLike) === 'Object') {
19261869
if (HasSlot(calendarLike, CALENDAR)) return GetSlot(calendarLike, CALENDAR);

polyfill/lib/plaindate.mjs

+16-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { TypeError as TypeErrorCtor } from './primordials.mjs';
22

3+
import { calendarImpl } from './calendar.mjs';
34
import * as ES from './ecmascript.mjs';
45
import { DateTimeFormat } from './intl.mjs';
56
import { MakeIntrinsicClass } from './intrinsicclass.mjs';
@@ -34,77 +35,77 @@ export class PlainDate {
3435
get era() {
3536
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
3637
const isoDate = ES.TemporalObjectToISODateRecord(this);
37-
return ES.CalendarEra(GetSlot(this, CALENDAR), isoDate);
38+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { era: true }).era;
3839
}
3940
get eraYear() {
4041
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
4142
const isoDate = ES.TemporalObjectToISODateRecord(this);
42-
return ES.CalendarEraYear(GetSlot(this, CALENDAR), isoDate);
43+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { eraYear: true }).eraYear;
4344
}
4445
get year() {
4546
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
4647
const isoDate = ES.TemporalObjectToISODateRecord(this);
47-
return ES.CalendarYear(GetSlot(this, CALENDAR), isoDate);
48+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { year: true }).year;
4849
}
4950
get month() {
5051
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
5152
const isoDate = ES.TemporalObjectToISODateRecord(this);
52-
return ES.CalendarMonth(GetSlot(this, CALENDAR), isoDate);
53+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { month: true }).month;
5354
}
5455
get monthCode() {
5556
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
5657
const isoDate = ES.TemporalObjectToISODateRecord(this);
57-
return ES.CalendarMonthCode(GetSlot(this, CALENDAR), isoDate);
58+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthCode: true }).monthCode;
5859
}
5960
get day() {
6061
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
6162
const isoDate = ES.TemporalObjectToISODateRecord(this);
62-
return ES.CalendarDay(GetSlot(this, CALENDAR), isoDate);
63+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { day: true }).day;
6364
}
6465
get dayOfWeek() {
6566
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
6667
const isoDate = ES.TemporalObjectToISODateRecord(this);
67-
return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), isoDate);
68+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { dayOfWeek: true }).dayOfWeek;
6869
}
6970
get dayOfYear() {
7071
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
7172
const isoDate = ES.TemporalObjectToISODateRecord(this);
72-
return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), isoDate);
73+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { dayOfYear: true }).dayOfYear;
7374
}
7475
get weekOfYear() {
7576
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
7677
const isoDate = ES.TemporalObjectToISODateRecord(this);
77-
return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), isoDate);
78+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { weekOfYear: true }).weekOfYear.week;
7879
}
7980
get yearOfWeek() {
8081
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
8182
const isoDate = ES.TemporalObjectToISODateRecord(this);
82-
return ES.CalendarYearOfWeek(GetSlot(this, CALENDAR), isoDate);
83+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { weekOfYear: true }).weekOfYear.year;
8384
}
8485
get daysInWeek() {
8586
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
8687
const isoDate = ES.TemporalObjectToISODateRecord(this);
87-
return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), isoDate);
88+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInWeek: true }).daysInWeek;
8889
}
8990
get daysInMonth() {
9091
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
9192
const isoDate = ES.TemporalObjectToISODateRecord(this);
92-
return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), isoDate);
93+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInMonth: true }).daysInMonth;
9394
}
9495
get daysInYear() {
9596
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
9697
const isoDate = ES.TemporalObjectToISODateRecord(this);
97-
return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), isoDate);
98+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInYear: true }).daysInYear;
9899
}
99100
get monthsInYear() {
100101
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
101102
const isoDate = ES.TemporalObjectToISODateRecord(this);
102-
return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), isoDate);
103+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthsInYear: true }).monthsInYear;
103104
}
104105
get inLeapYear() {
105106
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');
106107
const isoDate = ES.TemporalObjectToISODateRecord(this);
107-
return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), isoDate);
108+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { inLeapYear: true }).inLeapYear;
108109
}
109110
with(temporalDateLike, options = undefined) {
110111
if (!ES.IsTemporalDate(this)) throw new TypeErrorCtor('invalid receiver');

polyfill/lib/plaindatetime.mjs

+16-15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
ObjectCreate
88
} from './primordials.mjs';
99

10+
import { calendarImpl } from './calendar.mjs';
1011
import * as ES from './ecmascript.mjs';
1112
import { DateTimeFormat } from './intl.mjs';
1213
import { MakeIntrinsicClass } from './intrinsicclass.mjs';
@@ -71,22 +72,22 @@ export class PlainDateTime {
7172
get year() {
7273
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
7374
const isoDate = ES.TemporalObjectToISODateRecord(this);
74-
return ES.CalendarYear(GetSlot(this, CALENDAR), isoDate);
75+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { year: true }).year;
7576
}
7677
get month() {
7778
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
7879
const isoDate = ES.TemporalObjectToISODateRecord(this);
79-
return ES.CalendarMonth(GetSlot(this, CALENDAR), isoDate);
80+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { month: true }).month;
8081
}
8182
get monthCode() {
8283
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
8384
const isoDate = ES.TemporalObjectToISODateRecord(this);
84-
return ES.CalendarMonthCode(GetSlot(this, CALENDAR), isoDate);
85+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthCode: true }).monthCode;
8586
}
8687
get day() {
8788
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
8889
const isoDate = ES.TemporalObjectToISODateRecord(this);
89-
return ES.CalendarDay(GetSlot(this, CALENDAR), isoDate);
90+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { day: true }).day;
9091
}
9192
get hour() {
9293
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
@@ -115,57 +116,57 @@ export class PlainDateTime {
115116
get era() {
116117
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
117118
const isoDate = ES.TemporalObjectToISODateRecord(this);
118-
return ES.CalendarEra(GetSlot(this, CALENDAR), isoDate);
119+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { era: true }).era;
119120
}
120121
get eraYear() {
121122
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
122123
const isoDate = ES.TemporalObjectToISODateRecord(this);
123-
return ES.CalendarEraYear(GetSlot(this, CALENDAR), isoDate);
124+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { eraYear: true }).eraYear;
124125
}
125126
get dayOfWeek() {
126127
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
127128
const isoDate = ES.TemporalObjectToISODateRecord(this);
128-
return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), isoDate);
129+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { dayOfWeek: true }).dayOfWeek;
129130
}
130131
get dayOfYear() {
131132
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
132133
const isoDate = ES.TemporalObjectToISODateRecord(this);
133-
return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), isoDate);
134+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { dayOfYear: true }).dayOfYear;
134135
}
135136
get weekOfYear() {
136137
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
137138
const isoDate = ES.TemporalObjectToISODateRecord(this);
138-
return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), isoDate);
139+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { weekOfYear: true }).weekOfYear.week;
139140
}
140141
get yearOfWeek() {
141142
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
142143
const isoDate = ES.TemporalObjectToISODateRecord(this);
143-
return ES.CalendarYearOfWeek(GetSlot(this, CALENDAR), isoDate);
144+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { weekOfYear: true }).weekOfYear.year;
144145
}
145146
get daysInWeek() {
146147
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
147148
const isoDate = ES.TemporalObjectToISODateRecord(this);
148-
return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), isoDate);
149+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInWeek: true }).daysInWeek;
149150
}
150151
get daysInYear() {
151152
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
152153
const isoDate = ES.TemporalObjectToISODateRecord(this);
153-
return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), isoDate);
154+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInYear: true }).daysInYear;
154155
}
155156
get daysInMonth() {
156157
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
157158
const isoDate = ES.TemporalObjectToISODateRecord(this);
158-
return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), isoDate);
159+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInMonth: true }).daysInMonth;
159160
}
160161
get monthsInYear() {
161162
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
162163
const isoDate = ES.TemporalObjectToISODateRecord(this);
163-
return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), isoDate);
164+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthsInYear: true }).monthsInYear;
164165
}
165166
get inLeapYear() {
166167
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');
167168
const isoDate = ES.TemporalObjectToISODateRecord(this);
168-
return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), isoDate);
169+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { inLeapYear: true }).inLeapYear;
169170
}
170171
with(temporalDateTimeLike, options = undefined) {
171172
if (!ES.IsTemporalDateTime(this)) throw new TypeErrorCtor('invalid receiver');

polyfill/lib/plainmonthday.mjs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { TypeError as TypeErrorCtor } from './primordials.mjs';
22

3+
import { calendarImpl } from './calendar.mjs';
34
import * as ES from './ecmascript.mjs';
45
import { DateTimeFormat } from './intl.mjs';
56
import { MakeIntrinsicClass } from './intrinsicclass.mjs';
@@ -19,12 +20,12 @@ export class PlainMonthDay {
1920
get monthCode() {
2021
if (!ES.IsTemporalMonthDay(this)) throw new TypeErrorCtor('invalid receiver');
2122
const isoDate = ES.TemporalObjectToISODateRecord(this);
22-
return ES.CalendarMonthCode(GetSlot(this, CALENDAR), isoDate);
23+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthCode: true }).monthCode;
2324
}
2425
get day() {
2526
if (!ES.IsTemporalMonthDay(this)) throw new TypeErrorCtor('invalid receiver');
2627
const isoDate = ES.TemporalObjectToISODateRecord(this);
27-
return ES.CalendarDay(GetSlot(this, CALENDAR), isoDate);
28+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { day: true }).day;
2829
}
2930
get calendarId() {
3031
if (!ES.IsTemporalMonthDay(this)) throw new TypeErrorCtor('invalid receiver');

polyfill/lib/plainyearmonth.mjs

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { TypeError as TypeErrorCtor } from './primordials.mjs';
22

3+
import { calendarImpl } from './calendar.mjs';
34
import * as ES from './ecmascript.mjs';
45
import { DateTimeFormat } from './intl.mjs';
56
import { MakeIntrinsicClass } from './intrinsicclass.mjs';
@@ -18,17 +19,17 @@ export class PlainYearMonth {
1819
get year() {
1920
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
2021
const isoDate = ES.TemporalObjectToISODateRecord(this);
21-
return ES.CalendarYear(GetSlot(this, CALENDAR), isoDate);
22+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { year: true }).year;
2223
}
2324
get month() {
2425
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
2526
const isoDate = ES.TemporalObjectToISODateRecord(this);
26-
return ES.CalendarMonth(GetSlot(this, CALENDAR), isoDate);
27+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { month: true }).month;
2728
}
2829
get monthCode() {
2930
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
3031
const isoDate = ES.TemporalObjectToISODateRecord(this);
31-
return ES.CalendarMonthCode(GetSlot(this, CALENDAR), isoDate);
32+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthCode: true }).monthCode;
3233
}
3334
get calendarId() {
3435
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
@@ -37,32 +38,32 @@ export class PlainYearMonth {
3738
get era() {
3839
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
3940
const isoDate = ES.TemporalObjectToISODateRecord(this);
40-
return ES.CalendarEra(GetSlot(this, CALENDAR), isoDate);
41+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { era: true }).era;
4142
}
4243
get eraYear() {
4344
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
4445
const isoDate = ES.TemporalObjectToISODateRecord(this);
45-
return ES.CalendarEraYear(GetSlot(this, CALENDAR), isoDate);
46+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { eraYear: true }).eraYear;
4647
}
4748
get daysInMonth() {
4849
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
4950
const isoDate = ES.TemporalObjectToISODateRecord(this);
50-
return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), isoDate);
51+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInMonth: true }).daysInMonth;
5152
}
5253
get daysInYear() {
5354
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
5455
const isoDate = ES.TemporalObjectToISODateRecord(this);
55-
return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), isoDate);
56+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { daysInYear: true }).daysInYear;
5657
}
5758
get monthsInYear() {
5859
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
5960
const isoDate = ES.TemporalObjectToISODateRecord(this);
60-
return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), isoDate);
61+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { monthsInYear: true }).monthsInYear;
6162
}
6263
get inLeapYear() {
6364
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');
6465
const isoDate = ES.TemporalObjectToISODateRecord(this);
65-
return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), isoDate);
66+
return calendarImpl(GetSlot(this, CALENDAR)).isoToDate(isoDate, { inLeapYear: true }).inLeapYear;
6667
}
6768
with(temporalYearMonthLike, options = undefined) {
6869
if (!ES.IsTemporalYearMonth(this)) throw new TypeErrorCtor('invalid receiver');

0 commit comments

Comments
 (0)