RFR: JDK-6801704: ChoiceFormat::applyPattern inconsistency for invalid patterns
Justin Lu
jlu at openjdk.org
Wed Feb 14 22:34:13 UTC 2024
Please review this PR and [CSR](https://bugs.openjdk.org/browse/JDK-8317756) which defines the behavior for creating ChoiceFormats with incorrect patterns. The wording is added to both the ChoiceFormat constructor and ChoiceFormat::applyPattern method.
While ideally the inconsistent behavior itself could be fixed, this behavior has been long-standing for 20+ years and the benefit of consistent error handling does not outweigh the risk of breaking applications that may be relying on the "expected" incorrect behavior.
Examples of the range of behavior, (all examples violate the pattern syntax defined in the class description)
// no limit -> throws an expected IllegalArgumentException
var a = new ChoiceFormat("#foo");
// no limit or relation in the last subPattern -> discards the incorrect portion, 'baz' and continues
var b = new ChoiceFormat("0#foo|1#bar|baz");
b.format(2); // returns 'bar'
// no relation or limit -> discards the incorrect portion, 'foo' and continues
var c = new ChoiceFormat("foo");
c.format(1); // throws AIOOBE
-------------
Commit messages:
- more conservative wording
- init
Changes: https://git.openjdk.org/jdk/pull/17856/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17856&range=00
Issue: https://bugs.openjdk.org/browse/JDK-6801704
Stats: 11 lines in 1 file changed: 11 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/17856.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/17856/head:pull/17856
PR: https://git.openjdk.org/jdk/pull/17856
More information about the core-libs-dev
mailing list