Reproduce desugared library build failure
Bug: b/b231925782
Change-Id: I8f2b9d72d55fe4aab6526262ed6a57d34fde7494
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs_legacy.json b/src/library_desugar/jdk11/desugar_jdk_libs_legacy.json
index ce1b3ff..b92af9f 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs_legacy.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs_legacy.json
@@ -43,19 +43,9 @@
}
},
{
- "api_level_below_or_equal": 10000,
+ "api_level_below_or_equal": 23,
"rewrite_prefix": {
- "java.util.DoubleSummaryStatistics": "j$.util.DoubleSummaryStatistics",
- "java.util.IntSummaryStatistics": "j$.util.IntSummaryStatistics",
- "java.util.LongSummaryStatistics": "j$.util.LongSummaryStatistics",
- "java.util.Optional": "j$.util.Optional",
- "java.util.PrimitiveIterator": "j$.util.PrimitiveIterator",
- "java.util.Spliterator": "j$.util.Spliterator",
- "java.util.StringJoiner": "j$.util.StringJoiner",
- "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
- "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
- "java.util.function.": "j$.util.function.",
- "java.util.stream.": "j$.util.stream."
+ "java.util.function.": "j$.util.function."
},
"emulate_interface": {
"java.lang.Iterable": "j$.lang.Iterable",
@@ -71,7 +61,22 @@
},
"dont_rewrite": [
"java.util.Iterator#remove"
- ],
+ ]
+ },
+ {
+ "api_level_below_or_equal": 10000,
+ "rewrite_prefix": {
+ "java.util.DoubleSummaryStatistics": "j$.util.DoubleSummaryStatistics",
+ "java.util.IntSummaryStatistics": "j$.util.IntSummaryStatistics",
+ "java.util.LongSummaryStatistics": "j$.util.LongSummaryStatistics",
+ "java.util.Optional": "j$.util.Optional",
+ "java.util.PrimitiveIterator": "j$.util.PrimitiveIterator",
+ "java.util.Spliterator": "j$.util.Spliterator",
+ "java.util.StringJoiner": "j$.util.StringJoiner",
+ "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
+ "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
+ "java.util.stream.": "j$.util.stream."
+ },
"retarget_lib_member": {
"java.util.Arrays#spliterator": "java.util.DesugarArrays",
"java.util.Arrays#stream": "java.util.DesugarArrays",
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/legacy/L8TestWithLegacySpecification.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/legacy/L8TestWithLegacySpecification.java
index cab982a..3a6fd81 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/legacy/L8TestWithLegacySpecification.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/legacy/L8TestWithLegacySpecification.java
@@ -11,11 +11,14 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -26,25 +29,38 @@
public class L8TestWithLegacySpecification extends TestBase {
@Parameter(0)
- public TestParameters parameters;
+ public AndroidApiLevel apiLevel;
@Parameter(1)
+ public CompilationMode mode;
+
+ @Parameter(2)
public L8KeepRules l8KeepRules;
- @Parameters(name = "{0}, {1}")
+ @Parameter(3)
+ public TestParameters none;
+
+ @Parameters(name = "{0}, {1}, {2}")
public static List<Object[]> data() {
return buildParameters(
- getTestParameters().withAllRuntimes().withAllApiLevelsAlsoForCf().build(),
+ Arrays.stream(AndroidApiLevel.values())
+ .sorted()
+ .filter(apiLevel -> apiLevel.isGreaterThanOrEqualTo(AndroidApiLevel.L))
+ .filter(apiLevel -> apiLevel.isLessThan(AndroidApiLevel.ANDROID_PLATFORM))
+ .collect(Collectors.toList()),
+ CompilationMode.values(),
ImmutableList.of(
new L8KeepRules("AGP", agp73KeepRules),
new L8KeepRules("j$", ImmutableList.of("-keep class j$.** { *; }")),
new L8KeepRules("java", ImmutableList.of("-keep class java.** { *; }")),
new L8KeepRules(
"both",
- ImmutableList.of("-keep class j$.** { *; }", "-keep class java.** { *; }"))));
+ ImmutableList.of("-keep class j$.** { *; }", "-keep class java.** { *; }"))),
+ getTestParameters().withNoneRuntime().build());
}
private static class L8KeepRules {
+
private String name;
private List<String> keepRules;
@@ -160,10 +176,11 @@
LibraryDesugaringSpecification.JDK11_LEGACY.getSpecification(),
StandardCharsets.UTF_8))
.addProguardConfiguration(l8KeepRules.keepRules, Origin.unknown())
- .setMode(CompilationMode.RELEASE)
+ .setMode(mode)
.setOutput(temp.newFolder().toPath().resolve("out.jar"), OutputMode.DexIndexed)
- .setMinApiLevel(21)
+ .setMinApiLevel(apiLevel.getLevel())
.build();
+ // TODO(b/231925782): This should succeed for all API levels.
L8.run(command);
}
}