Skip to content

Commit c76c77f

Browse files
committed
Polyfill: Change checks to assertions in adjustEras
It would be an internal era to call adjustEras on invalid eras data, so change all these checks to assertions.
1 parent 03f9057 commit c76c77f

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

polyfill/lib/calendar.mjs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,18 +1593,12 @@ const helperIndian = makeNonISOHelper([{ code: 'shaka', isoEpoch: { year: 79, mo
15931593
* ```
15941594
* */
15951595
function adjustEras(eras) {
1596-
if (eras.length === 0) {
1597-
throw new RangeErrorCtor('Invalid era data: eras are required');
1598-
}
1599-
if (eras.length === 1 && eras[0].reverseOf) {
1600-
throw new RangeErrorCtor('Invalid era data: anchor era cannot count years backwards');
1601-
}
1602-
if (eras.length === 1 && !eras[0].code) {
1603-
throw new RangeErrorCtor('Invalid era data: at least one named era is required');
1604-
}
1605-
if (Call(ArrayPrototypeFilter, eras, [(e) => e.reverseOf != null]).length > 1) {
1606-
throw new RangeErrorCtor('Invalid era data: only one era can count years backwards');
1607-
}
1596+
// It's an internal error if the eras data are malformed
1597+
assert(eras.length > 0, 'Invalid era data: eras are required');
1598+
assert(!(eras.length === 1 && eras[0].reverseOf), 'Invalid era data: anchor era cannot count years backwards');
1599+
assert(!(eras.length === 1 && !eras[0].code), 'Invalid era data: at least one named era is required');
1600+
const moreThanOneReverseOf = Call(ArrayPrototypeFilter, eras, [(e) => e.reverseOf != null]).length > 1;
1601+
assert(!moreThanOneReverseOf, 'Invalid era data: only one era can count years backwards');
16081602

16091603
// Find the "anchor era" which is the era used for (era-less) `year`. Reversed
16101604
// eras can never be anchors. The era without an `anchorEpoch` property is the
@@ -1613,12 +1607,11 @@ function adjustEras(eras) {
16131607
Call(ArrayPrototypeForEach, eras, [
16141608
(e) => {
16151609
if (e.isAnchor || (!e.anchorEpoch && !e.reverseOf)) {
1616-
if (anchorEra) throw new RangeErrorCtor('Invalid era data: cannot have multiple anchor eras');
1610+
assert(!anchorEra, 'Invalid era data: cannot have multiple anchor eras');
16171611
anchorEra = e;
16181612
e.anchorEpoch = { year: e.hasYearZero ? 0 : 1 };
1619-
} else if (!e.code) {
1620-
throw new RangeErrorCtor('If era name is blank, it must be the anchor era');
16211613
}
1614+
assert(e.code, 'Invalid era data: if era name is blank, it must be the anchor era');
16221615
}
16231616
]);
16241617

@@ -1636,9 +1629,7 @@ function adjustEras(eras) {
16361629
const { reverseOf } = e;
16371630
if (reverseOf) {
16381631
const reversedEra = Call(ArrayPrototypeFind, eras, [(era) => era.code === reverseOf]);
1639-
if (reversedEra === undefined) {
1640-
throw new RangeErrorCtor(`Invalid era data: unmatched reverseOf era: ${reverseOf}`);
1641-
}
1632+
assert(reversedEra, `Invalid era data: unmatched reverseOf era: ${reverseOf}`);
16421633
e.reverseOf = reversedEra;
16431634
e.anchorEpoch = reversedEra.anchorEpoch;
16441635
e.isoEpoch = reversedEra.isoEpoch;
@@ -1655,7 +1646,7 @@ function adjustEras(eras) {
16551646
(e1, e2) => {
16561647
if (e1.reverseOf) return 1;
16571648
if (e2.reverseOf) return -1;
1658-
if (!e1.isoEpoch || !e2.isoEpoch) throw new RangeErrorCtor('Invalid era data: missing ISO epoch');
1649+
assert(e1.isoEpoch && e2.isoEpoch, 'Invalid era data: missing ISO epoch');
16591650
return e2.isoEpoch.year - e1.isoEpoch.year;
16601651
}
16611652
]);
@@ -1664,9 +1655,7 @@ function adjustEras(eras) {
16641655
// being reversed.
16651656
const lastEraReversed = eras[eras.length - 1].reverseOf;
16661657
if (lastEraReversed) {
1667-
if (lastEraReversed !== eras[eras.length - 2]) {
1668-
throw new RangeErrorCtor('Invalid era data: invalid reverse-sign era');
1669-
}
1658+
assert(lastEraReversed === eras[eras.length - 2], 'Invalid era data: invalid reverse-sign era');
16701659
}
16711660

16721661
// Finally, add a "genericName" property in the format "era{n} where `n` is

0 commit comments

Comments
 (0)