<i18n dev> RFR: 8369590: LocaleEnhanceTest has incorrectly passing test case [v5]

Justin Lu jlu at openjdk.org
Thu Oct 16 21:56:33 UTC 2025


> This PR corrects _test/jdk/java/util/Locale/LocaleEnhanceTest.java_, which has two test cases under `testBuilderSetLanguageTag()` which accidentally pass. One checks that Locale.setLanguageTag(String) throws ILE for duplicate extensions and the other for duplicate U-extension keys. The test cases are updated to actually test the provided code. When the test cases are fixed, they now fail.
> 
> Fixing the behavior to match the expectation of those test cases is consistent with the specification.
> 
> From `Locale.forLanguageTag(String)`,
> 
>> 
>>      * <p>If the specified language tag contains any ill-formed subtags,
>>      * the first such subtag and all following subtags are ignored.  Compare
>>      * to {@link Locale.Builder#setLanguageTag(String)} which throws an exception
>>      * in this case.
> 
> and the RFC specification
> 
>> Each singleton subtag MUST appear at most one time in each tag
>>        (other than as a private use subtag).  That is, singleton subtags
>>        MUST NOT be repeated.  For example, the tag "en-a-bbb-a-ccc" is
>>        invalid because the subtag 'a' appears twice.
> 
> Since duplicate extensions (and Unicode keys/attributes) are invalid, throwing `IllformedLocaleException` in (the strict) `Locale.Builder` and ignoring in (the lenient) `Locale.forLanguageTag` for such tags would be appropriate. This PR updates the implementation as such.

Justin Lu has updated the pull request incrementally with one additional commit since the last revision:

  Remove impl changes. Simply update test to reflect duplicate ignoring behavior

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/27775/files
  - new: https://git.openjdk.org/jdk/pull/27775/files/b0cfd59b..62c9aa5b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=27775&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27775&range=03-04

  Stats: 78 lines in 4 files changed: 4 ins; 38 del; 36 mod
  Patch: https://git.openjdk.org/jdk/pull/27775.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27775/head:pull/27775

PR: https://git.openjdk.org/jdk/pull/27775


More information about the i18n-dev mailing list