Extract abstraction for CaseMapper. This is so that we could replace it in WASM to prevent infinite recursion due to Character.toLowerCase. PiperOrigin-RevId: 373483600 Change-Id: I24e58c9eb4db6a0d95e180c9bdef4558da08fc2e
diff --git a/user/super/com/google/gwt/emul/java/lang/CaseMapper.java b/user/super/com/google/gwt/emul/java/lang/CaseMapper.java new file mode 100644 index 0000000..b3413a8 --- /dev/null +++ b/user/super/com/google/gwt/emul/java/lang/CaseMapper.java
@@ -0,0 +1,30 @@ +/* + * Copyright 2021 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package java.lang; + +/** Performs case operations. Abstracted so can be platform specific. */ +final class CaseMapper { + + public static char charToLowerCase(char c) { + return String.valueOf(c).toLowerCase().charAt(0); + } + + public static char charToUpperCase(char c) { + return String.valueOf(c).toUpperCase().charAt(0); + } + + private CaseMapper() {} +}
diff --git a/user/super/com/google/gwt/emul/java/lang/Character.java b/user/super/com/google/gwt/emul/java/lang/Character.java index 9bef6a5..3733f73 100644 --- a/user/super/com/google/gwt/emul/java/lang/Character.java +++ b/user/super/com/google/gwt/emul/java/lang/Character.java
@@ -413,7 +413,7 @@ } public static char toLowerCase(char c) { - return String.valueOf(c).toLowerCase().charAt(0); + return CaseMapper.charToLowerCase(c); } public static String toString(char x) { @@ -421,7 +421,7 @@ } public static char toUpperCase(char c) { - return String.valueOf(c).toUpperCase().charAt(0); + return CaseMapper.charToUpperCase(c); } public static Character valueOf(char c) {