On Fri, 16 Feb 2024 21:53:26 GMT, Justin Lu <j...@openjdk.org> wrote:
>> 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 > > Justin Lu has updated the pull request incrementally with one additional > commit since the last revision: > > replace spec tag with note src/java.base/share/classes/java/text/ChoiceFormat.java line 235: > 233: * > 234: * @implNote Given an incorrect pattern, this implementation may > either > 235: * throw an exception or succeed and discard the incorrect An explanation for the exception may be helpful, either enumerating possible exceptions or simply a `RuntimeException`. src/java.base/share/classes/java/text/ChoiceFormat.java line 237: > 235: * throw an exception or succeed and discard the incorrect > 236: * portion. Discarding the incorrect portion may result in a > ChoiceFormat > 237: * with empty {@code limits} and {@code choices}. `formats` instead of `choices`? A `choice` means a `limit`+`format` to me. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/17856#discussion_r1493046166 PR Review Comment: https://git.openjdk.org/jdk/pull/17856#discussion_r1493048629