Enable CF on CompositionalLenseTest.

Change-Id: I36e42dca958af92ae9a63a893aef6e0c4dbf2861
diff --git a/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java b/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java
index 6c6e69d..4903304 100644
--- a/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java
+++ b/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java
@@ -11,19 +11,24 @@
 import com.android.tools.r8.R8Command;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.code.InvokeVirtual;
-import com.android.tools.r8.graph.DexCode;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.FileUtils;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
+import com.android.tools.r8.utils.codeinspector.InstructionSubject;
+import com.android.tools.r8.utils.codeinspector.InvokeInstructionSubject;
 import com.android.tools.r8.utils.codeinspector.MethodSubject;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 // Base -> X:
 class Base {
@@ -47,10 +52,22 @@
   }
 }
 
+@RunWith(Parameterized.class)
 public class CompositionalLenseTest extends TestBase {
   private final static List<Class> CLASSES =
       ImmutableList.of(Base.class, Sub.class, TestMain.class);
 
+  private Backend backend;
+
+  @Parameterized.Parameters(name = "Backend: {0}")
+  public static Collection<Backend> data() {
+    return Arrays.asList(Backend.values());
+  }
+
+  public CompositionalLenseTest(Backend backend) {
+    this.backend = backend;
+  }
+
   @Test
   public void test() throws Exception {
     Path mapPath = temp.newFile("test-mapping.txt").toPath();
@@ -63,26 +80,38 @@
     FileUtils.writeTextFile(mapPath, pgMap);
 
     AndroidApp app = readClasses(CLASSES);
-    R8Command.Builder builder = ToolHelper.prepareR8CommandBuilder(app);
-    builder.addProguardConfiguration(
-        ImmutableList.of(
-            keepMainProguardConfiguration(TestMain.class),
-            "-applymapping " + mapPath,
-            "-dontobfuscate"),  // to use the renamed names in test-mapping.txt
-        Origin.unknown());
+    R8Command.Builder builder = ToolHelper.prepareR8CommandBuilder(app, emptyConsumer(backend));
+    builder
+        .addProguardConfiguration(
+            ImmutableList.of(
+                keepMainProguardConfiguration(TestMain.class),
+                "-applymapping " + mapPath,
+                "-dontobfuscate"), // to use the renamed names in test-mapping.txt
+            Origin.unknown())
+        .addLibraryFiles(runtimeJar(backend));
     AndroidApp processedApp = ToolHelper.runR8(builder.build(), options -> {
       options.enableInlining = false;
       options.enableClassMerging = false;
     });
-    CodeInspector codeInspector = new CodeInspector(processedApp);
+    CodeInspector codeInspector = new CodeInspector(processedApp, o -> o.enableCfFrontend = true);
     ClassSubject classSubject = codeInspector.clazz(TestMain.class);
     assertThat(classSubject, isPresent());
     MethodSubject methodSubject = classSubject.method(CodeInspector.MAIN);
     assertThat(methodSubject, isPresent());
-    DexCode dexCode = methodSubject.getMethod().getCode().asDexCode();
-    assertTrue(dexCode.instructions[2] instanceof InvokeVirtual);
-    InvokeVirtual invoke = (InvokeVirtual) dexCode.instructions[2];
-    DexMethod invokedMethod = invoke.getMethod();
+    Iterator<InstructionSubject> iterator = methodSubject.iterateInstructions();
+
+    InstructionSubject instruction = null;
+    boolean found = false;
+    while (iterator.hasNext()) {
+      instruction = iterator.next();
+      if (instruction.isInvokeVirtual()) {
+        found = true;
+        break;
+      }
+    }
+    assertTrue(found);
+
+    DexMethod invokedMethod = ((InvokeInstructionSubject) instruction).invokedMethod();
     assertEquals("bar", invokedMethod.name.toString());
     assertEquals("X", invokedMethod.getHolder().getName());
   }