Maintain interface bits in desugaring even when compiling for dex

Change-Id: I456d64ea51b337a9a4d727480caa1fdec4e0513a
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index f41bdce..d203a12 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -540,16 +540,6 @@
 
     boolean holderIsInterface() {
       InternalOptions options = appView.options();
-      if (!options.isGeneratingClassFiles()) {
-        // When generating dex the value of this flag on invokes does not matter (unused).
-        // We cannot know if definitionFor(implMethod.holder) is null or not in that case,
-        // so we cannot set the flag and just return false.
-        return false;
-      }
-      // The only case where we do Lambda desugaring with Cf to Cf is in L8.
-      // If the compilation is not coreLibraryCompilation, then the assertion
-      // implMethodHolder != null may fail, hence the assertion.
-      assert options.cfToCfDesugar;
       DexMethod implMethod = descriptor.implHandle.asMethod();
       DexClass implMethodHolder = appView.definitionFor(implMethod.holder);
       if (implMethodHolder == null) {
diff --git a/src/test/java/com/android/tools/r8/desugar/b72538146/B72538146.java b/src/test/java/com/android/tools/r8/desugar/b72538146/B72538146.java
index bfc400d..fbb29e8 100644
--- a/src/test/java/com/android/tools/r8/desugar/b72538146/B72538146.java
+++ b/src/test/java/com/android/tools/r8/desugar/b72538146/B72538146.java
@@ -4,47 +4,73 @@
 
 package com.android.tools.r8.desugar.b72538146;
 
-import static org.junit.Assert.assertEquals;
-import com.android.tools.r8.OutputMode;
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.ToolHelper.DexVm.Version;
-import com.android.tools.r8.VmTestRunner;
-import com.android.tools.r8.VmTestRunner.IgnoreIfVmOlderOrEqualThan;
-import com.android.tools.r8.utils.AndroidApp;
+import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
-@RunWith(VmTestRunner.class)
+@RunWith(Parameterized.class)
 public class B72538146 extends TestBase {
 
+  private final TestParameters parameters;
+
+  @Parameterized.Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters()
+        .withDexRuntimesStartingFromIncluding(Version.V7_0_0)
+        .withAllApiLevels()
+        .build();
+  }
+
+  public B72538146(TestParameters parameters) {
+    this.parameters = parameters;
+  }
+
   @Test
-  @IgnoreIfVmOlderOrEqualThan(Version.V6_0_1)
   public void test() throws Exception {
-    // Build the main app from source compiled separately using the Android API for classloading.
-    AndroidApp.Builder builder = AndroidApp.builder();
-    builder.addProgramFile(
-        Paths.get("build/test/examplesAndroidApi/classes/classloader/Runner.class"));
-    AndroidApp app = compileWithD8(builder.build());
-
     // Compile the parent and child applications into separate dex applications.
-    Path parent = temp.newFolder("parent").toPath().resolve("classes.zip");
-    Path child = temp.newFolder("child").toPath().resolve("classes.zip");
-    AndroidApp parentApp = readClasses(
-        Parent.class,
-        Parent.Inner1.class,
-        Parent.Inner2.class,
-        Parent.Inner3.class,
-        Parent.Inner4.class);
-    compileWithD8(parentApp).write(parent, OutputMode.DexIndexed);
+    List<Class<?>> parentClasses =
+        ImmutableList.of(
+            Parent.class,
+            Parent.Inner1.class,
+            Parent.Inner2.class,
+            Parent.Inner3.class,
+            Parent.Inner4.class);
 
-    AndroidApp childApp = readClasses(Child.class);
-    compileWithD8(childApp).write(child, OutputMode.DexIndexed);
+    Path parent =
+        testForD8()
+            .addProgramClasses(parentClasses)
+            .setMinApi(parameters.getApiLevel())
+            .compile()
+            .writeToZip();
+
+    Path child =
+        testForD8()
+            .addProgramClasses(Child.class)
+            .addClasspathClasses(parentClasses)
+            .setMinApi(parameters.getApiLevel())
+            .compile()
+            .writeToZip();
 
     // Run the classloader test loading the two dex applications.
-    String result = runOnArt(app, "classloader.Runner",
-        parent.toString(), child.toString(), "com.android.tools.r8.desugar.b72538146.Child");
-    assertEquals("SUCCESS", result);
+    testForD8()
+        .addProgramFiles(
+            Paths.get("build/test/examplesAndroidApi/classes/classloader/Runner.class"))
+        .setMinApi(parameters.getApiLevel())
+        .compile()
+        .run(
+            parameters.getRuntime(),
+            "classloader.Runner",
+            parent.toString(),
+            child.toString(),
+            Child.class.getTypeName())
+        .assertSuccessWithOutput("SUCCESS");
   }
 }