On Fri, 16 Jun 2023 17:18:38 GMT, Naoto Sato <na...@openjdk.org> wrote:
>> src/java.base/share/classes/sun/util/locale/BaseLocale.java line 175: >> >>> 173: >>> LocaleUtils.toLowerString(b.getLanguage()).intern(), >>> 174: >>> LocaleUtils.toTitleString(b.getScript()).intern(), >>> 175: >>> LocaleUtils.toUpperString(b.getRegion()).intern(), >> >> don't lines 147 and 148 above already guarantee the language and region have >> correct case? > > 147,148 are in `getInstance()` and the BaseLocale key here is created with a > constructor, which simply copies the passed arguments. So normalization is > needed here perhaps I am missing something, but aren't `language` and `region` being reassigned to the case adjusted values? So the values used to create the "key" BaseLocale instance reflect that case adjustment? (language is again potentially adjusted at line 162 to account for old iso codes, but that never results in the wrong case.) language = LocaleUtils.toLowerString(language); region = LocaleUtils.toUpperString(region); ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/14404#discussion_r1232880865