Ignore java override warning in L8 compilation
Bug: 219741905
Change-Id: I40100dc623f6ab792022e3409d33658bf3cd59d8
diff --git a/src/main/java/com/android/tools/r8/graph/LazyLoadedDexApplication.java b/src/main/java/com/android/tools/r8/graph/LazyLoadedDexApplication.java
index 35a2dd6..b781f0b 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyLoadedDexApplication.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyLoadedDexApplication.java
@@ -231,6 +231,9 @@
private static void warnJavaLibraryOverride(
InternalOptions options, Set<DexType> javaLibraryOverride) {
+ if (options.ignoreJavaLibraryOverride) {
+ return;
+ }
String joined =
javaLibraryOverride.stream()
.sorted()
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java
index 0701952..51516d4 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineSpecificationConverter.java
@@ -16,6 +16,7 @@
import com.android.tools.r8.graph.DexReference;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.graph.DirectMappedDexApplication;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAmender;
import com.android.tools.r8.ir.desugar.desugaredlibrary.humanspecification.HumanDesugaredLibrarySpecification;
import com.android.tools.r8.ir.desugar.desugaredlibrary.humanspecification.HumanRewritingFlags;
@@ -154,7 +155,11 @@
private DexApplication readApp(AndroidApp inputApp, InternalOptions options) throws IOException {
ApplicationReader applicationReader = new ApplicationReader(inputApp, options, Timing.empty());
ExecutorService executorService = ThreadUtils.getExecutorService(options);
- return applicationReader.read(executorService).toDirect();
+ assert !options.ignoreJavaLibraryOverride;
+ options.ignoreJavaLibraryOverride = true;
+ DirectMappedDexApplication app = applicationReader.read(executorService).toDirect();
+ options.ignoreJavaLibraryOverride = false;
+ return app;
}
void warnMissingReferences(String message, Set<? extends DexReference> missingReferences) {
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 ea4779a..3fec28a 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -349,6 +349,8 @@
public boolean invalidDebugInfoStrict =
System.getProperty("com.android.tools.r8.strictdebuginfo") != null;
+ public boolean ignoreJavaLibraryOverride = false;
+
// When dexsplitting we ignore main dex classes missing in the application. These will be
// fused together by play store when shipped for pre-L devices.
public boolean ignoreMainDexMissingClasses = false;
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryContentTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryContentTest.java
index 744e127..2684b3b 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryContentTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryContentTest.java
@@ -119,18 +119,7 @@
ToolHelper.runL8(l8Builder.build(), options -> {});
CodeInspector codeInspector = new CodeInspector(desugaredLib);
assertCorrect(codeInspector);
- assertOneWarning(diagnosticsHandler);
- }
-
- private void assertOneWarning(TestDiagnosticMessagesImpl diagnosticsHandler) {
- if (requiresAnyCoreLibDesugaring(parameters)) {
- String msg = diagnosticsHandler.getWarnings().get(0).getDiagnosticMessage();
- assertTrue(
- msg.contains(
- "The following library types, prefixed by java., are present both as library and non"
- + " library classes"));
- }
- diagnosticsHandler.assertNoErrors();
+ diagnosticsHandler.assertNoMessages();
}
private void assertCorrect(CodeInspector inspector) {
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryWarningTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryWarningTest.java
index ac49689..0c61a06 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryWarningTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryWarningTest.java
@@ -4,8 +4,6 @@
package com.android.tools.r8.desugar.desugaredlibrary;
-import static org.junit.Assert.assertTrue;
-
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.L8Command;
import com.android.tools.r8.OutputMode;
@@ -67,19 +65,6 @@
Arrays.asList(FUNCTION_KEEP.split(System.lineSeparator())), Origin.unknown());
}
ToolHelper.runL8(l8Builder.build(), options -> {});
- boolean hasWarning = requiresAnyCoreLibDesugaring(parameters);
- diagnosticsHandler.assertNoErrors();
- if (hasWarning) {
- assertTrue(
- diagnosticsHandler
- .getWarnings()
- .get(0)
- .getDiagnosticMessage()
- .contains(
- "The following library types, prefixed by java., are present both as library and"
- + " non library classes:"));
- } else {
- diagnosticsHandler.assertNoWarnings();
- }
+ diagnosticsHandler.assertNoMessages();
}
}