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

Reply via email to