Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 330c88a

Browse files
committed
Bug 1974768 - Part 2: Update era codes. r=spidermonkey-reviewers,dminor
Update era codes to sync with <tc39/proposal-intl-era-monthcode#39>: - Hijri calendars now have an inverse era `bh`. - Era names matching the calendar name have been removed. Differential Revision: https://phabricator.services.mozilla.com/D255510
1 parent 1157492 commit 330c88a

File tree

3 files changed

+33
-51
lines changed

3 files changed

+33
-51
lines changed

js/src/builtin/temporal/Calendar.cpp

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2449,19 +2449,6 @@ static bool CalendarResolveFields(JSContext* cx, CalendarId calendar,
24492449
return true;
24502450
}
24512451

2452-
static bool IsIslamicCalendar(CalendarId id) {
2453-
switch (id) {
2454-
case CalendarId::Islamic:
2455-
case CalendarId::IslamicCivil:
2456-
case CalendarId::IslamicRGSA:
2457-
case CalendarId::IslamicTabular:
2458-
case CalendarId::IslamicUmmAlQura:
2459-
return true;
2460-
default:
2461-
return false;
2462-
}
2463-
}
2464-
24652452
/**
24662453
* CalendarISOToDate ( calendar, isoDate )
24672454
*
@@ -2484,12 +2471,6 @@ bool js::temporal::CalendarEra(JSContext* cx, Handle<CalendarValue> calendar,
24842471
return true;
24852472
}
24862473

2487-
if (IsIslamicCalendar(calendarId)) {
2488-
// ICU4X Hijri calender has inverted era year.
2489-
result.setUndefined();
2490-
return true;
2491-
}
2492-
24932474
auto cal = CreateICU4XCalendar(calendarId);
24942475
auto dt = CreateICU4XDate(cx, date, calendarId, cal.get());
24952476
if (!dt) {
@@ -2533,12 +2514,6 @@ bool js::temporal::CalendarEraYear(JSContext* cx,
25332514
return true;
25342515
}
25352516

2536-
if (IsIslamicCalendar(calendarId)) {
2537-
// ICU4X Hijri calender has inverted era year.
2538-
result.setUndefined();
2539-
return true;
2540-
}
2541-
25422517
auto cal = CreateICU4XCalendar(calendarId);
25432518
auto dt = CreateICU4XDate(cx, date, calendarId, cal.get());
25442519
if (!dt) {

js/src/builtin/temporal/Era.h

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -63,29 +63,21 @@ inline constexpr auto Empty = {
6363
};
6464

6565
inline constexpr auto Gregorian = {
66-
"gregory"sv,
6766
"ce"sv,
6867
"ad"sv,
6968
};
7069

7170
inline constexpr auto GregorianInverse = {
72-
"gregory-inverse"sv,
73-
"bc"sv,
7471
"bce"sv,
72+
"bc"sv,
7573
};
7674

77-
inline constexpr auto Japanese = {
78-
"japanese"sv,
79-
"gregory"sv,
80-
"ad"sv,
81-
"ce"sv,
75+
inline constexpr auto Islamic = {
76+
"ah"sv,
8277
};
8378

84-
inline constexpr auto JapaneseInverse = {
85-
"japanese-inverse"sv,
86-
"gregory-inverse"sv,
87-
"bc"sv,
88-
"bce"sv,
79+
inline constexpr auto IslamicInverse = {
80+
"bh"sv,
8981
};
9082

9183
inline constexpr auto JapaneseMeiji = {
@@ -114,8 +106,9 @@ inline constexpr auto ROC = {
114106
};
115107

116108
inline constexpr auto ROCInverse = {
117-
"roc-inverse"sv,
109+
"broc"sv,
118110
"before-roc"sv,
111+
"minguo-qian"sv,
119112
};
120113
} // namespace names
121114
} // namespace eras
@@ -164,11 +157,6 @@ constexpr auto& CalendarEraNames(CalendarId calendar, EraCode era) {
164157
case CalendarId::EthiopianAmeteAlem:
165158
case CalendarId::Hebrew:
166159
case CalendarId::Indian:
167-
case CalendarId::Islamic:
168-
case CalendarId::IslamicCivil:
169-
case CalendarId::IslamicRGSA:
170-
case CalendarId::IslamicTabular:
171-
case CalendarId::IslamicUmmAlQura:
172160
case CalendarId::Persian:
173161
return eras::names::Empty;
174162

@@ -178,12 +166,22 @@ constexpr auto& CalendarEraNames(CalendarId calendar, EraCode era) {
178166
: eras::names::GregorianInverse;
179167
}
180168

169+
case CalendarId::Islamic:
170+
case CalendarId::IslamicCivil:
171+
case CalendarId::IslamicRGSA:
172+
case CalendarId::IslamicTabular:
173+
case CalendarId::IslamicUmmAlQura: {
174+
MOZ_ASSERT(era == EraCode::Standard || era == EraCode::Inverse);
175+
return era == EraCode::Standard ? eras::names::Islamic
176+
: eras::names::IslamicInverse;
177+
}
178+
181179
case CalendarId::Japanese: {
182180
switch (era) {
183181
case EraCode::Standard:
184-
return eras::names::Japanese;
182+
return eras::names::Gregorian;
185183
case EraCode::Inverse:
186-
return eras::names::JapaneseInverse;
184+
return eras::names::GregorianInverse;
187185
case EraCode::Meiji:
188186
return eras::names::JapaneseMeiji;
189187
case EraCode::Taisho:
@@ -225,17 +223,17 @@ constexpr bool CalendarEraStartsAtYearBoundary(CalendarId id) {
225223
case CalendarId::EthiopianAmeteAlem:
226224
case CalendarId::Hebrew:
227225
case CalendarId::Indian:
228-
case CalendarId::Islamic:
229-
case CalendarId::IslamicCivil:
230-
case CalendarId::IslamicRGSA:
231-
case CalendarId::IslamicTabular:
232-
case CalendarId::IslamicUmmAlQura:
233226
case CalendarId::Persian:
234227
return true;
235228

236229
// Calendar system which use multiple eras, but each era starts at a year
237230
// boundary.
238231
case CalendarId::Gregorian:
232+
case CalendarId::Islamic:
233+
case CalendarId::IslamicCivil:
234+
case CalendarId::IslamicRGSA:
235+
case CalendarId::IslamicTabular:
236+
case CalendarId::IslamicUmmAlQura:
239237
case CalendarId::ROC:
240238
return true;
241239

js/src/tests/jstests.list

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,3 +948,12 @@ skip script test262/staging/Intl402/Temporal/old/non-iso-calendars-ethiopic.js
948948

949949
# https://github.com/tc39/proposal-intl-era-monthcode/issues/23 and https://github.com/tc39/proposal-intl-era-monthcode/issues/4
950950
skip script test262/staging/sm/Temporal/PlainDate/non-positive-era-year.js
951+
952+
# Canonical era names have changed.
953+
skip script test262/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes.js
954+
skip script test262/staging/Intl402/Temporal/old/japanese-before-era.js
955+
skip script test262/staging/Intl402/Temporal/old/non-iso-calendars-gregory.js
956+
skip script test262/staging/Intl402/Temporal/old/non-iso-calendars-islamicc.js
957+
skip script test262/staging/Intl402/Temporal/old/non-iso-calendars-islamic-civil.js
958+
skip script test262/staging/Intl402/Temporal/old/non-iso-calendars-islamic-tbla.js
959+
skip script test262/staging/Intl402/Temporal/old/non-iso-calendars-islamic-umalqura.js

0 commit comments

Comments
 (0)