1
0
mirror of https://github.com/roytam1/UXP.git synced 2026-05-26 13:58:49 +00:00

Issue #2350 - Part 2: Allow "maximumFractionDigits" option in Intl.NumberFormat to be less than the default minimum fraction digits.

This implements the changes from the "has consensus" PR in TC39
The second pair of `DefaultNumberOption()` calls was inlined, because
only the fallback case is relevant anyway.

Steps 12.d and 12.e from the spec PR were combined into a single
`if`-block. That way it also matches step 12.f more closely.
Also changed the single `if` steps into an `if-else if` chain, because
the steps are mutually exclusive.
This commit is contained in:
Moonchild
2023-10-19 15:46:27 +02:00
committed by roytam1
parent be81bae5b7
commit e65b46ba0f
+22 -7
View File
@@ -170,18 +170,33 @@ function SetNumberFormatDigitOptions(lazyData, options, mnfdDefault, mxfdDefault
// Step 12.a (Omitted).
// Step 12.b.
mnfd = DefaultNumberOption(mnfd, 0, 20, mnfdDefault);
mnfd = DefaultNumberOption(mnfd, 0, 20, undefined);
// Step 12.c.
const mxfdActualDefault = std_Math_max(mnfd, mxfdDefault);
mxfd = DefaultNumberOption(mxfd, 0, 20, undefined);
// Step 12.d.
mxfd = DefaultNumberOption(mxfd, mnfd, 20, mxfdActualDefault);
// Step 12.e.
lazyData.minimumFractionDigits = mnfd;
// Steps 12.d-e.
// Inlined DefaultNumberOption, only the fallback case applies here.
if (mnfd === undefined) {
assert(mxfd !== undefined, "mxfd isn't undefined when mnfd is undefined");
mnfd = std_Math_min(mnfdDefault, mxfd);
}
// Step 12.f.
// Inlined DefaultNumberOption, only the fallback case applies here.
else if (mxfd === undefined) {
mxfd = std_Math_max(mxfdDefault, mnfd);
}
// Step 12.g.
else if (mnfd > mxfd) {
ThrowRangeError(JSMSG_INVALID_DIGITS_VALUE, mxfd);
}
// Step 12.h.
lazyData.minimumFractionDigits = mnfd;
// Step 12.i.
lazyData.maximumFractionDigits = mxfd;
}