Update update backports for Android 14 and Android 15
* int CharSequence.compare(CharSequence, CharSequence) was added in
Android 14
* Character.toString(int) was added in Android 15
Also update the global synthetics count for Android 15
Bug: b/343127842
Change-Id: I5d657e5e0a73286b5a3d0eec3f796103d8f8024a
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
index 025f819..0b7f0bc 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
@@ -295,6 +295,9 @@
}
initializeAndroidUMethodProviders(factory);
}
+ if (options.getMinApiLevel().isLessThan(AndroidApiLevel.V)) {
+ initializeAndroidVMethodProviders(factory);
+ }
initializeMethodProvidersUnimplementedOnAndroid(factory);
}
@@ -1726,6 +1729,17 @@
addProvider(
new MethodGenerator(method, BackportedMethods::ObjectsMethods_checkFromIndexSizeLong));
+ // CharSequence
+ type = factory.charSequenceType;
+
+ // int CharSequence.compare(CharSequence, CharSequence)
+ name = factory.createString("compare");
+ proto =
+ factory.createProto(factory.intType, factory.charSequenceType, factory.charSequenceType);
+ method = factory.createMethod(type, proto, name);
+ addProvider(
+ new MethodGenerator(method, BackportedMethods::CharSequenceMethods_compare, "compare"));
+
DexType[] mathTypes = {factory.mathType, factory.strictMathType};
for (DexType mathType : mathTypes) {
// int {StrictMath.Math}.absExact(int)
@@ -1743,7 +1757,7 @@
initializeMathExactApis(factory, factory.strictMathType);
}
- private void initializeMethodProvidersUnimplementedOnAndroid(DexItemFactory factory) {
+ private void initializeAndroidVMethodProviders(DexItemFactory factory) {
// Character
DexType type = factory.boxedCharType;
@@ -1754,17 +1768,10 @@
addProvider(
new MethodGenerator(
method, BackportedMethods::CharacterMethods_toStringCodepoint, "toStringCodepoint"));
+ }
- // CharSequence
- type = factory.charSequenceType;
-
- // int CharSequence.compare(CharSequence, CharSequence)
- name = factory.createString("compare");
- proto =
- factory.createProto(factory.intType, factory.charSequenceType, factory.charSequenceType);
- method = factory.createMethod(type, proto, name);
- addProvider(
- new MethodGenerator(method, BackportedMethods::CharSequenceMethods_compare, "compare"));
+ private void initializeMethodProvidersUnimplementedOnAndroid(DexItemFactory factory) {
+ // None at the moment.
}
private void initializeAndroidUStreamMethodProviders(DexItemFactory factory) {
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java b/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java
index 3f55e91..26098b7 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java
@@ -90,18 +90,12 @@
if (apiLevel == AndroidApiLevel.MAIN) {
continue;
}
- if (apiLevel == AndroidApiLevel.U) {
- continue;
- }
- if (apiLevel == AndroidApiLevel.T) {
- continue;
- }
if (!ToolHelper.hasAndroidJar(apiLevel)) {
// Only check for the android jar versions present in third_party.
System.out.println("Skipping check for " + apiLevel);
continue;
}
- // Check that the backported methods for each API level are are not present in the
+ // Check that the backported methods for each API level are not present in the
// android.jar for that level.
CodeInspector inspector = new CodeInspector(ToolHelper.getAndroidJar(apiLevel));
InternalOptions options = new InternalOptions();
diff --git a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
index 9ec7c0f..e6ee76a 100644
--- a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
+++ b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
@@ -58,7 +58,7 @@
.setMinApi(AndroidApiLevel.K)
.compile()
.inspect(
- inspector -> assertEquals(backend.isDex() ? 1045 : 4, inspector.allClasses().size()));
+ inspector -> assertEquals(backend.isDex() ? 1077 : 4, inspector.allClasses().size()));
}
@Test