On Wed, 12 Jun 2024 21:58:25 GMT, Justin Lu <j...@openjdk.org> wrote:

>> Please review this PR and [CSR](https://bugs.openjdk.org/browse/JDK-8333920) 
>> which corrects a bug where NumberFormat cannot successfully parse values in 
>> integer only mode, when the format expects a suffix.
>> 
>> For example,
>> 
>> // a format that expects a currency suffix
>> var fmt = NumberFormat.getCurrencyInstance(Locale.FRANCE);
>> fmt.setParseIntegerOnly(true);
>> failFmt.parse("5,00 €"); // throws ParseException when you would have 
>> expected 5 returned
>> 
>> 
>> When parsing in integer only mode, instead of breaking upon a decimal symbol 
>> encounter, we should store the index but continue to fully parse so that we 
>> can verify the entire string and increment our position to search for and 
>> match the suffix. Upon a successful suffix match, we can then set 
>> `ParsePosition.index` back to the stored decimal index.
>> 
>> It should be noted that CompactNumberFormat did previously have code that 
>> would traverse the rest of the String, to allow matching of the suffix. The 
>> difference is that NumberFormat returns the index upon decimal symbol 
>> encounter, while CompactNumberFormat was implemented to return the index 
>> reflected by the entire string traversal. Such differences cannot be 
>> standardized due to behavioral compatibility concerns.
>> 
>> Thus while parsing in integer only, CNF sets index to the 
>> `Position.fullPos()`, while DF sets index to the `Position.intPos()`.
>
> Justin Lu has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   reflect review comments

LGTM

-------------

Marked as reviewed by naoto (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/19664#pullrequestreview-2116669878

Reply via email to