Warning when desugared conversion on return type

Change-Id: Ifbcc99deb1e7c90fdb28ff15a2e840bcfdf95d6f
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java
index 2a79973..8f0e3f6 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java
@@ -33,25 +33,33 @@
       if (appView.rewritePrefix.hasRewrittenType(invokedMethod.holder)) {
         continue;
       }
+      // In this case, the method has not been rewritten and is not on a rewritten class.
+      // This invoke will (likely) not work at runtime if a desugared type is present.
+      if (appView.rewritePrefix.hasRewrittenType(invokedMethod.proto.returnType)) {
+        warnInvalidInvoke(invokedMethod.proto.returnType, invokedMethod, "return");
+      }
       for (DexType argType : invokedMethod.proto.parameters.values) {
         if (appView.rewritePrefix.hasRewrittenType(argType)) {
-          // In this case, the method has not been rewritten and is not on a rewritten class.
-          // This invoke will (likely) not work at runtime.
-          appView
-              .options()
-              .reporter
-              .warning(
-                  new StringDiagnostic(
-                      "Invoke to "
-                          + invokedMethod.holder
-                          + "#"
-                          + invokedMethod.name
-                          + " may not work correctly at runtime (Parameter "
-                          + appView.rewritePrefix.rewrittenType(argType)
-                          + " is a desugared type)."));
-          continue;
+          warnInvalidInvoke(argType, invokedMethod, "parameter");
         }
       }
     }
   }
+
+  private void warnInvalidInvoke(DexType type, DexMethod invokedMethod, String debugString) {
+    appView
+        .options()
+        .reporter
+        .warning(
+            new StringDiagnostic(
+                "Invoke to "
+                    + invokedMethod.holder
+                    + "#"
+                    + invokedMethod.name
+                    + " may not work correctly at runtime ("
+                    + debugString
+                    + " type "
+                    + appView.rewritePrefix.rewrittenType(type)
+                    + " is a desugared type)."));
+  }
 }
diff --git a/src/test/java/com/android/tools/r8/desugar/corelib/APIConversionTest.java b/src/test/java/com/android/tools/r8/desugar/corelib/APIConversionTest.java
index b060bdb..167ecf7 100644
--- a/src/test/java/com/android/tools/r8/desugar/corelib/APIConversionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/corelib/APIConversionTest.java
@@ -13,7 +13,9 @@
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.StringUtils;
 import java.util.Arrays;
+import java.util.Random;
 import java.util.function.IntUnaryOperator;
+import java.util.stream.IntStream;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -43,9 +45,11 @@
         .setMinApi(parameters.getApiLevel())
         .compile()
         .assertNoWarningMessageThatMatches(containsString("java.util.Arrays#setAll"))
+        .assertNoWarningMessageThatMatches(containsString("java.util.Random#ints"))
         .assertNoWarningMessageThatMatches(endsWith("is a desugared type)."))
         .run(parameters.getRuntime(), Executor.class)
-        .assertSuccessWithOutput(StringUtils.lines("[5, 6, 7]"));
+        .assertSuccessWithOutput(
+            StringUtils.lines("[5, 6, 7]", "java.util.stream.IntPipeline$Head"));
   }
 
   @Test
@@ -57,6 +61,7 @@
         .enableCoreLibraryDesugaring(parameters.getApiLevel())
         .compile()
         .assertWarningMessageThatMatches(containsString("java.util.Arrays#setAll"))
+        .assertWarningMessageThatMatches(containsString("java.util.Random#ints"))
         .assertWarningMessageThatMatches(endsWith("is a desugared type)."))
         .addDesugaredCoreLibraryRunClassPath(this::buildDesugaredLibrary, parameters.getApiLevel())
         .run(parameters.getRuntime(), Executor.class)
@@ -70,6 +75,8 @@
       int[] ints = new int[3];
       Arrays.setAll(ints, new MyFunction());
       System.out.println(Arrays.toString(ints));
+      IntStream intStream = new Random().ints();
+      System.out.println(intStream.getClass().getName());
     }
   }