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