Reapply "Re-enable toArray desugaring"
This reverts commit a1085b0ee3200c822321cfaf44aa844e2e4e60c8.
Change-Id: I74b64371fe8e7bf86cf2f4e2ac34e82d64ad8001
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs.json b/src/library_desugar/jdk11/desugar_jdk_libs.json
index df0df7b..98e217d 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs.json
@@ -1,5 +1,5 @@
{
- "identifier": "com.tools.android:desugar_jdk_libs_configuration:2.0.4",
+ "identifier": "com.tools.android:desugar_jdk_libs_configuration:2.1.0",
"configuration_format_version": 101,
"required_compilation_api_level": 30,
"synthesized_library_classes_package_prefix": "j$.",
@@ -7,6 +7,12 @@
"common_flags": [
{
"api_level_below_or_equal": 10000,
+ "amend_library_method": [
+ "public java.lang.Object[] java.util.Collection#toArray(java.util.function.IntFunction)"
+ ]
+ },
+ {
+ "api_level_below_or_equal": 10000,
"api_level_greater_or_equal": 26,
"rewrite_prefix": {
"java.time.DesugarLocalDate": "j$.time.DesugarLocalDate",
@@ -57,6 +63,14 @@
"rewrite_prefix": {
"java.util.concurrent.DesugarTimeUnit": "j$.util.concurrent.DesugarTimeUnit"
},
+ "emulate_interface": {
+ "java.util.Collection": {
+ "rewrittenType": "j$.util.Collection",
+ "emulatedMethods": [
+ "java.lang.Object[] java.util.Collection#toArray(java.util.function.IntFunction)"
+ ]
+ }
+ },
"retarget_method": {
"java.util.concurrent.TimeUnit java.util.concurrent.TimeUnit#of(java.time.temporal.ChronoUnit)": "java.util.concurrent.DesugarTimeUnit",
"java.time.temporal.ChronoUnit java.util.concurrent.TimeUnit#toChronoUnit()": "java.util.concurrent.DesugarTimeUnit",
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json b/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json
index d69ed9a..7303240 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json
@@ -1,5 +1,5 @@
{
- "identifier": "com.tools.android:desugar_jdk_libs_configuration_minimal:2.0.4",
+ "identifier": "com.tools.android:desugar_jdk_libs_configuration_minimal:2.1.0",
"configuration_format_version": 101,
"required_compilation_api_level": 24,
"synthesized_library_classes_package_prefix": "j$.",
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs_nio.json b/src/library_desugar/jdk11/desugar_jdk_libs_nio.json
index 29e4e26..41ff9a8 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs_nio.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs_nio.json
@@ -1,5 +1,5 @@
{
- "identifier": "com.tools.android:desugar_jdk_libs_configuration_nio:2.0.4",
+ "identifier": "com.tools.android:desugar_jdk_libs_configuration_nio:2.1.0",
"configuration_format_version": 101,
"required_compilation_api_level": 30,
"synthesized_library_classes_package_prefix": "j$.",
@@ -8,6 +8,7 @@
{
"api_level_below_or_equal": 10000,
"amend_library_method": [
+ "public java.lang.Object[] java.util.Collection#toArray(java.util.function.IntFunction)",
"public static java.nio.file.Path java.nio.file.Path#of(java.lang.String, java.lang.String[])",
"public static java.nio.file.Path java.nio.file.Path#of(java.net.URI)"
]
@@ -76,6 +77,14 @@
"java.io.DesugarInputStream": "j$.io.DesugarInputStream",
"java.util.concurrent.DesugarTimeUnit": "j$.util.concurrent.DesugarTimeUnit"
},
+ "emulate_interface": {
+ "java.util.Collection": {
+ "rewrittenType": "j$.util.Collection",
+ "emulatedMethods": [
+ "java.lang.Object[] java.util.Collection#toArray(java.util.function.IntFunction)"
+ ]
+ }
+ },
"retarget_method": {
"java.util.concurrent.TimeUnit java.util.concurrent.TimeUnit#of(java.time.temporal.ChronoUnit)": "java.util.concurrent.DesugarTimeUnit",
"java.time.temporal.ChronoUnit java.util.concurrent.TimeUnit#toChronoUnit()": "java.util.concurrent.DesugarTimeUnit",
@@ -588,7 +597,9 @@
"api_level_below_or_equal": 10000,
"api_level_greater_or_equal": 26,
"rewrite_prefix": {
- "sun.nio.cs.UTF_8": "j$.sun.nio.cs.UTF_8"
+ "sun.nio.cs.UTF_8": "j$.sun.nio.cs.UTF_8",
+ "sun.nio.cs.Unicode": "j$.sun.nio.cs.Unicode",
+ "sun.nio.cs.HistoricallyNamedCharset": "j$.sun.nio.cs.HistoricallyNamedCharset"
},
"retarget_static_field": {
"sun.nio.cs.UTF_8 sun.nio.cs.UTF_8#INSTANCE": "java.nio.charset.Charset java.nio.charset.StandardCharsets#UTF_8"
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryInvokeAllResolveTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryInvokeAllResolveTest.java
index c134dc8..1d3b636 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryInvokeAllResolveTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryInvokeAllResolveTest.java
@@ -131,10 +131,10 @@
BackportedMethodRewriter.generateListOfBackportedMethods(libHolder, options);
Map<DexMethod, Object> failures = new IdentityHashMap<>();
for (FoundClassSubject clazz : inspector.allClasses()) {
- if (clazz.toString().startsWith("j$.sun.nio.cs.UTF_8")
+ if (clazz.toString().startsWith("j$.sun.nio.cs.")
&& parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.O)) {
- // At high API level, the class UTF_8 is there just for resolution, the field access is
- // retargeted and the code is unused so it's ok if it does not resolve.
+ // At high API level, the sun.nio.cs classes are there just for resolution, the field
+ // access is retargeted and the code is unused so it's ok if it does not resolve.
continue;
}
for (FoundMethodSubject method : clazz.allMethods()) {
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/PartialDesugaringTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/PartialDesugaringTest.java
index 7d29fa4..2d01320 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/PartialDesugaringTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/PartialDesugaringTest.java
@@ -217,14 +217,10 @@
&& api.isLessThan(AndroidApiLevel.T)) {
expectedFailures.addAll(FAILURES_FILE_STORE);
}
- if (librarySpecification != JDK11_MINIMAL && api.isLessThan(AndroidApiLevel.T)) {
- if (librarySpecification == JDK8) {
- if (api.isGreaterThanOrEqualTo(AndroidApiLevel.N)) {
- expectedFailures.addAll(FAILURES_TO_ARRAY);
- }
- } else {
- expectedFailures.addAll(FAILURES_TO_ARRAY);
- }
+ if (librarySpecification == JDK8
+ && api.isLessThan(AndroidApiLevel.T)
+ && api.isGreaterThanOrEqualTo(AndroidApiLevel.N)) {
+ expectedFailures.addAll(FAILURES_TO_ARRAY);
}
if (jdk11NonMinimal
&& api.isGreaterThanOrEqualTo(AndroidApiLevel.O)
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java
index bd5554af..6f1b750 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java
@@ -18,7 +18,6 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -54,7 +53,6 @@
this.compilationSpecification = compilationSpecification;
}
- @Ignore("b/266401747")
@Test
public void test() throws Throwable {
testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)