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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user