Fix Red tests
Change-Id: I045edc938dc3dd3dfca9006c12f341f22c70bfa0
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 4c820ff..4336f61 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -236,7 +236,10 @@
this.lambdaRewriter = new LambdaRewriter(appView);
this.desugaredLibraryAPIConverter =
new DesugaredLibraryAPIConverter(appView, Mode.GENERATE_CALLBACKS_AND_WRAPPERS);
- this.backportedMethodRewriter = null;
+ this.backportedMethodRewriter =
+ options.testing.forceLibBackportsInL8CfToCf
+ ? new BackportedMethodRewriter(appView, this)
+ : null;
this.twrCloseResourceRewriter = null;
this.lambdaMerger = null;
this.covariantReturnTypeAnnotationTransformer = null;
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 c56524e..e9a6faa 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
@@ -297,6 +297,14 @@
private final Map<DexMethod, MethodProvider> rewritable = new IdentityHashMap<>();
RewritableMethods(InternalOptions options, AppView<?> appView) {
+ if (options.testing.forceLibBackportsInL8CfToCf) {
+ DexItemFactory factory = options.itemFactory;
+ initializeJava9OptionalMethodProviders(factory);
+ initializeJava10OptionalMethodProviders(factory);
+ initializeJava11OptionalMethodProviders(factory);
+ initializeStreamMethodProviders(factory);
+ return;
+ }
if (!options.shouldBackportMethods()) {
return;
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index ae119c2..c4481f5 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1097,7 +1097,7 @@
public PrintStream whyAreYouNotInliningConsumer = System.out;
public boolean trackDesugaredAPIConversions =
System.getProperty("com.android.tools.r8.trackDesugaredAPIConversions") != null;
-
+ public boolean forceLibBackportsInL8CfToCf = false;
// TODO(b/144781417): This is disabled by default as some test apps appear to have such classes.
public boolean allowNonAbstractClassesWithAbstractMethods = true;
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java
index 628fbfe..b68997a 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java
@@ -82,7 +82,7 @@
// If we compile extended library here, it means we use TestNG.
// TestNG requires annotations, hence we disable AnnotationRemoval.
// This implies that extra warning are generated if this is set.
- boolean disableL8AnnotationRemovalForTesting = !additionalProgramFiles.isEmpty();
+ boolean extraFiles = !additionalProgramFiles.isEmpty();
ArrayList<Path> extraPaths = new ArrayList<>(additionalProgramFiles);
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
Path desugaredLib = temp.newFolder().toPath().resolve("desugar_jdk_libs_dex.zip");
@@ -104,11 +104,12 @@
ToolHelper.runL8(
l8Builder.build(),
options -> {
- if (disableL8AnnotationRemovalForTesting) {
+ if (extraFiles) {
options.testing.disableL8AnnotationRemoval = true;
+ options.testing.forceLibBackportsInL8CfToCf = true;
}
});
- if (!disableL8AnnotationRemovalForTesting) {
+ if (!extraFiles) {
assertTrue(
diagnosticsHandler.getInfos().stream()
.noneMatch(