Desugared library: warnings
- Promote infos that do not happen on
normal compilation anymore to warnings.
- Remove warnings on missing wrappers.
- Remove infos on large wrappers (they have
to be there anyway...)
Bug: 145658750
Change-Id: I03024fa3ff1d3a3a2fff83b9fa27755eeca68eee
diff --git a/src/library_desugar/desugar_jdk_libs.json b/src/library_desugar/desugar_jdk_libs.json
index 3cfd647..0264810 100644
--- a/src/library_desugar/desugar_jdk_libs.json
+++ b/src/library_desugar/desugar_jdk_libs.json
@@ -1,6 +1,6 @@
{
"configuration_format_version": 3,
- "version": "0.9.0",
+ "version": "0.9.1",
"required_compilation_api_level": 26,
"synthesized_library_classes_package_prefix": "j$.",
"library_flags": [
@@ -66,7 +66,10 @@
"java.util.Optional": "j$.util.OptionalConversions",
"java.util.OptionalDouble": "j$.util.OptionalConversions",
"java.util.OptionalInt": "j$.util.OptionalConversions",
- "java.util.OptionalLong": "j$.util.OptionalConversions"
+ "java.util.OptionalLong": "j$.util.OptionalConversions",
+ "java.util.LongSummaryStatistics": "j$.util.LongSummaryStatisticsConversions",
+ "java.util.IntSummaryStatistics": "j$.util.IntSummaryStatisticsConversions",
+ "java.util.DoubleSummaryStatistics": "j$.util.DoubleSummaryStatisticsConversions"
}
}
],
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryWrapperSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryWrapperSynthesizer.java
index d75b84c..c9bd364 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryWrapperSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryWrapperSynthesizer.java
@@ -381,7 +381,7 @@
appView
.options()
.reporter
- .info(
+ .warning(
new StringDiagnostic(
"Desugared library API conversion: cannot wrap final methods "
+ Arrays.toString(methodArray)
@@ -440,17 +440,6 @@
workList.add(superClass);
}
}
- // 10 is large enough to avoid warnings on Clock/Function, but not on Stream.
- if (implementedMethods.size() > 10) {
- appView
- .options()
- .reporter
- .info(
- new StringDiagnostic(
- "Desugared library API conversion: Generating a large wrapper for "
- + libraryClass.type
- + ". Is that the intended behavior?"));
- }
return implementedMethods;
}
@@ -585,7 +574,7 @@
factory.createString(
"Unsupported conversion for "
+ type
- + ". See compilation time infos for more details."),
+ + ". See compilation time warnings for more details."),
holder)
.generateCfCode();
} else {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
index 5293247..5d01e19 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -1142,6 +1142,7 @@
// Companion/Emulated interface/Conversion classes for desugared library won't be missing,
// they are in the desugared library.
if (appView.rewritePrefix.hasRewrittenType(missing)
+ || DesugaredLibraryWrapperSynthesizer.isSynthesizedWrapper(missing)
|| appView
.options()
.desugaredLibraryConfiguration
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java
index 6085be7..cd3e666 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java
@@ -59,6 +59,7 @@
.setMinApi(parameters.getApiLevel())
.enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
.compile()
+ .assertNoMessages()
.inspect(
inspector -> {
this.assertCustomCollectionCallsCorrect(inspector, false);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionLargeWarningTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionLargeWarningTest.java
deleted file mode 100644
index fe0e1a5..0000000
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionLargeWarningTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.desugar.desugaredlibrary.conversiontests;
-
-import static org.hamcrest.CoreMatchers.startsWith;
-
-import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
-import com.android.tools.r8.utils.AndroidApiLevel;
-import java.nio.file.Path;
-import java.time.Clock;
-import java.util.function.Function;
-import java.util.stream.Stream;
-import org.junit.Test;
-
-public class APIConversionLargeWarningTest extends DesugaredLibraryTestBase {
-
- @Test
- public void testFinalMethod() throws Exception {
- Path customLib = testForD8().addProgramClasses(CustomLibClass.class).compile().writeToZip();
- testForD8()
- .setMinApi(AndroidApiLevel.B)
- .addProgramClasses(Executor.class)
- .addLibraryClasses(CustomLibClass.class)
- .enableCoreLibraryDesugaring(AndroidApiLevel.B)
- .compile()
- .assertInfoMessageThatMatches(
- startsWith(
- "Desugared library API conversion: Generating a large wrapper for"
- + " java.util.stream.Stream"))
- .assertNoInfoMessageThatMatches(
- startsWith(
- "Desugared library API conversion: Generating a large wrapper for java.time.Clock"))
- .assertNoInfoMessageThatMatches(
- startsWith(
- "Desugared library API conversion: Generating a large wrapper for"
- + " java.util.function.Function"));
- }
-
- static class Executor {
-
- public static void main(String[] args) {
- CustomLibClass.callClock(Clock.systemUTC());
- CustomLibClass.callStream(Stream.empty());
- CustomLibClass.callFunction(x -> x);
- }
- }
-
- // This class will be put at compilation time as library and on the runtime class path.
- // This class is convenient for easy testing. Each method plays the role of methods in the
- // platform APIs for which argument/return values need conversion.
- static class CustomLibClass {
-
- public static void callStream(Stream stream) {}
-
- public static void callClock(Clock clock) {}
-
- public static void callFunction(Function<String, String> func) {}
- }
-}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTest.java
index 4c2007f..1cb8f74 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTest.java
@@ -60,7 +60,7 @@
.setMinApi(parameters.getApiLevel())
.enableCoreLibraryDesugaring(parameters.getApiLevel())
.compile()
- .assertOnlyInfos() // No warnings.
+ .assertNoMessages()
.addDesugaredCoreLibraryRunClassPath(this::buildDesugaredLibrary, parameters.getApiLevel())
.run(parameters.getRuntime(), Executor.class)
.assertSuccessWithOutput(