-
Notifications
You must be signed in to change notification settings - Fork 5.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8336847: Use pattern match switch in NumberFormat classes #20302
Conversation
👋 Welcome back jlu! A progress list of the required criteria for merging this PR into |
case BigDecimal bd -> digitList.set(isNegative, bd, maxDigits, true); | ||
case Long l -> digitList.set(isNegative, l, maxDigits); | ||
case BigInteger bi -> digitList.set(isNegative, bi, maxDigits); | ||
default -> {} // do nothing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
default case could also be thrown AssertionError
if preferred.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or a simple assert
statement, as throwing an Error could change the behavior
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Either of the 3 is fine with me. In this case, I think AssertionError
is harmless, because AFAICT it is internally used by CompactNumberFormat only, and so throwing may prevent potential incorrect uses in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, then I think I am inclined to use AssertionError
, assuming DigitList
is defined to only accept those types. Might want to modify the method description too.
@justin-curtis-lu This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 25 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
@justin-curtis-lu The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Appears to be an equivalent migration by naked eye.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new AssertionError looks neat.
case AtomicLong al -> format(al.longValue(), toAppendTo, pos); | ||
case BigInteger bi when bi.bitLength() < 64 -> format(bi.longValue(), toAppendTo, pos); | ||
case Number n -> format(n.doubleValue(), toAppendTo, pos); | ||
case null, default -> throw new IllegalArgumentException("Cannot format given Object as a Number"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case null, default -> throw new IllegalArgumentException("Cannot format given Object as a Number"); | |
case null, default -> throw new IllegalArgumentException("Cannot format given Object as a Number"); |
Thanks for the reviews. |
Going to push as commit 5a8861a.
Your commit was automatically rebased without conflicts. |
@justin-curtis-lu Pushed as commit 5a8861a. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
As discussed in #19513 (comment), there is code within java.text.NumberFormat (and subclasses) that can use the pattern match switch to improve readability.
As this is simply cleanup, there is no regression test added. (Tiers 1-3 and java_text JCK ran to ensure clean migration).
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/20302/head:pull/20302
$ git checkout pull/20302
Update a local copy of the PR:
$ git checkout pull/20302
$ git pull https://git.openjdk.org/jdk.git pull/20302/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 20302
View PR using the GUI difftool:
$ git pr show -t 20302
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/20302.diff
Webrev
Link to Webrev Comment