Merge "Add a failing test for b/112290098"
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index ecaae31..2af67a4 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -828,9 +828,9 @@
   }
 
   public static R8Command.Builder prepareR8CommandBuilder(
-      AndroidApp app, DiagnosticsHandler diagnosticsHandler) {
+      AndroidApp app, ProgramConsumer programConsumer, DiagnosticsHandler diagnosticsHandler) {
     return R8Command.builder(app, diagnosticsHandler)
-        .setProgramConsumer(DexIndexedConsumer.emptyConsumer())
+        .setProgramConsumer(programConsumer)
         .setProguardMapConsumer(StringConsumer.emptyConsumer());
   }
 
diff --git a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java
index e3f6eac..2f59f6d 100644
--- a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java
+++ b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java
@@ -11,17 +11,19 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
+import com.android.tools.r8.ClassFileConsumer;
 import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.DataDirectoryResource;
 import com.android.tools.r8.DataEntryResource;
 import com.android.tools.r8.DataResourceConsumer;
 import com.android.tools.r8.DataResourceProvider.Visitor;
+import com.android.tools.r8.DexIndexedConsumer;
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.R8Command;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.ArchiveResourceProvider;
 import com.android.tools.r8.utils.FileUtils;
@@ -33,6 +35,7 @@
 import java.nio.charset.Charset;
 import java.nio.file.Path;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -40,8 +43,22 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
-public class AdaptResourceFileContentsTest extends ProguardCompatabilityTestBase {
+@RunWith(Parameterized.class)
+public class AdaptResourceFileContentsTest extends ProguardCompatibilityTestBase {
+
+  private Backend backend;
+
+  @Parameterized.Parameters(name = "Backend: {0}")
+  public static Collection<Backend> data() {
+    return Arrays.asList(Backend.values());
+  }
+
+  public AdaptResourceFileContentsTest(Backend backend) {
+    this.backend = backend;
+  }
 
   protected static class CustomDataResourceConsumer implements DataResourceConsumer {
 
@@ -302,10 +319,19 @@
 
   private AndroidApp compileWithR8(String proguardConfig, DataResourceConsumer dataResourceConsumer)
       throws CompilationFailedException, IOException {
+    assert backend == Backend.DEX || backend == Backend.CF;
     R8Command command =
         ToolHelper.allowTestProguardOptions(
-                ToolHelper.prepareR8CommandBuilder(getAndroidApp())
+                ToolHelper.prepareR8CommandBuilder(
+                        getAndroidApp(),
+                        backend == Backend.DEX
+                            ? DexIndexedConsumer.emptyConsumer()
+                            : ClassFileConsumer.emptyConsumer())
                     .addProguardConfiguration(ImmutableList.of(proguardConfig), Origin.unknown()))
+            .addLibraryFiles(
+                backend == Backend.DEX
+                    ? ToolHelper.getDefaultAndroidJar()
+                    : ToolHelper.getJava8RuntimeJar())
             .build();
     return ToolHelper.runR8(
         command,
diff --git a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java
index dbe6541..51201df 100644
--- a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java
+++ b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java
@@ -11,18 +11,20 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
+import com.android.tools.r8.ClassFileConsumer;
 import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.DataDirectoryResource;
 import com.android.tools.r8.DataEntryResource;
 import com.android.tools.r8.DataResourceConsumer;
 import com.android.tools.r8.DataResourceProvider.Visitor;
+import com.android.tools.r8.DexIndexedConsumer;
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.R8Command;
 import com.android.tools.r8.StringConsumer;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.naming.AdaptResourceFileContentsTest.CustomDataResourceConsumer;
 import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.ArchiveResourceProvider;
 import com.android.tools.r8.utils.FileUtils;
@@ -33,6 +35,8 @@
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -40,8 +44,22 @@
 import java.util.stream.Collectors;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
-public class AdaptResourceFileNamesTest extends ProguardCompatabilityTestBase {
+@RunWith(Parameterized.class)
+public class AdaptResourceFileNamesTest extends ProguardCompatibilityTestBase {
+
+  private Backend backend;
+
+  @Parameterized.Parameters(name = "Backend: {0}")
+  public static Collection<Backend> data() {
+    return Arrays.asList(Backend.values());
+  }
+
+  public AdaptResourceFileNamesTest(Backend backend) {
+    this.backend = backend;
+  }
 
   private static final Path CF_DIR =
       Paths.get(ToolHelper.EXAMPLES_CF_DIR).resolve("adaptresourcefilenames");
@@ -238,10 +256,20 @@
       StringConsumer proguardMapConsumer,
       List<DataEntryResource> dataResources)
       throws CompilationFailedException, IOException {
+    assert backend == Backend.DEX || backend == Backend.CF;
     R8Command command =
         ToolHelper.allowTestProguardOptions(
-                ToolHelper.prepareR8CommandBuilder(getAndroidApp(dataResources), diagnosticsHandler)
+                ToolHelper.prepareR8CommandBuilder(
+                        getAndroidApp(dataResources),
+                        backend == Backend.DEX
+                            ? DexIndexedConsumer.emptyConsumer()
+                            : ClassFileConsumer.emptyConsumer(),
+                        diagnosticsHandler)
                     .addProguardConfiguration(ImmutableList.of(proguardConfig), Origin.unknown()))
+            .addLibraryFiles(
+                backend == Backend.DEX
+                    ? ToolHelper.getDefaultAndroidJar()
+                    : ToolHelper.getJava8RuntimeJar())
             .build();
     return ToolHelper.runR8(
         command,
@@ -251,6 +279,7 @@
           options.enableClassMerging = true;
           options.dataResourceConsumer = dataResourceConsumer;
           options.proguardMapConsumer = proguardMapConsumer;
+          options.testing.suppressExperimentalCfBackendWarning = true;
         });
   }
 
diff --git a/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java b/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java
index 3f586e6..9eeb2f7 100644
--- a/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java
+++ b/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java
@@ -15,7 +15,7 @@
 import com.android.tools.r8.VmTestRunner.IgnoreIfVmOlderThan;
 import com.android.tools.r8.naming.b72391662.subpackage.OtherPackageSuper;
 import com.android.tools.r8.naming.b72391662.subpackage.OtherPackageTestClass;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -27,7 +27,7 @@
 import org.junit.runner.RunWith;
 
 @RunWith(VmTestRunner.class)
-public class B72391662 extends ProguardCompatabilityTestBase {
+public class B72391662 extends ProguardCompatibilityTestBase {
 
   private static final List<Class> CLASSES = ImmutableList.of(
       TestMain.class, Interface.class, Super.class, TestClass.class,
diff --git a/src/test/java/com/android/tools/r8/shaking/AsterisksTest.java b/src/test/java/com/android/tools/r8/shaking/AsterisksTest.java
index 05d0b6f..d28770a 100644
--- a/src/test/java/com/android/tools/r8/shaking/AsterisksTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/AsterisksTest.java
@@ -13,7 +13,7 @@
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.naming.MemberNaming.MethodSignature;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FieldSubject;
@@ -53,7 +53,7 @@
 }
 
 @RunWith(Parameterized.class)
-public class AsterisksTest extends ProguardCompatabilityTestBase {
+public class AsterisksTest extends ProguardCompatibilityTestBase {
   private final static List<Class> CLASSES = ImmutableList.of(B111974287.class);
   private final Shrinker shrinker;
 
@@ -63,7 +63,7 @@
 
   @Parameters(name = "shrinker: {0}")
   public static Collection<Object> data() {
-    return ImmutableList.of(Shrinker.PROGUARD6, Shrinker.R8);
+    return ImmutableList.of(Shrinker.PROGUARD6, Shrinker.R8, Shrinker.R8_CF);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ProguardCompatabilityTestBase.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ProguardCompatibilityTestBase.java
similarity index 79%
rename from src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ProguardCompatabilityTestBase.java
rename to src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ProguardCompatibilityTestBase.java
index c907276..24f64c9 100644
--- a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ProguardCompatabilityTestBase.java
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ProguardCompatibilityTestBase.java
@@ -8,6 +8,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
+import com.android.tools.r8.ClassFileConsumer;
 import com.android.tools.r8.CompatProguardCommandBuilder;
 import com.android.tools.r8.DataEntryResource;
 import com.android.tools.r8.DexIndexedConsumer;
@@ -28,7 +29,7 @@
 import java.util.List;
 import java.util.function.Consumer;
 
-public class ProguardCompatabilityTestBase extends TestBase {
+public class ProguardCompatibilityTestBase extends TestBase {
 
   protected Path proguardMap;
 
@@ -37,11 +38,16 @@
     PROGUARD6,
     PROGUARD6_THEN_D8,
     R8_COMPAT,
-    R8
+    R8_COMPAT_CF,
+    R8,
+    R8_CF
   }
 
   protected static boolean isR8(Shrinker shrinker) {
-    return shrinker == Shrinker.R8_COMPAT || shrinker == Shrinker.R8;
+    return shrinker == Shrinker.R8_COMPAT
+        || shrinker == Shrinker.R8_COMPAT_CF
+        || shrinker == Shrinker.R8
+        || shrinker == Shrinker.R8_CF;
   }
 
   protected AndroidApp runShrinker(
@@ -60,9 +66,13 @@
       case PROGUARD6_THEN_D8:
         return runProguard6AndD8(programClasses, proguardConfig, proguardMap);
       case R8_COMPAT:
-        return runR8Compat(programClasses, proguardConfig);
+        return runR8Compat(programClasses, proguardConfig, Backend.DEX);
+      case R8_COMPAT_CF:
+        return runR8Compat(programClasses, proguardConfig, Backend.CF);
       case R8:
-        return runR8(programClasses, proguardConfig);
+        return runR8(programClasses, proguardConfig, Backend.DEX);
+      case R8_CF:
+        return runR8(programClasses, proguardConfig, Backend.CF);
     }
     throw new IllegalArgumentException("Unknown shrinker: " + mode);
   }
@@ -83,47 +93,71 @@
       case PROGUARD6_THEN_D8:
         return inspectProguard6AndD8Result(programClasses, proguardConfig);
       case R8_COMPAT:
-        return inspectR8CompatResult(programClasses, proguardConfig);
+        return inspectR8CompatResult(programClasses, proguardConfig, Backend.DEX);
+      case R8_COMPAT_CF:
+        return inspectR8CompatResult(programClasses, proguardConfig, Backend.CF);
       case R8:
-        return inspectR8Result(programClasses, proguardConfig);
+        return inspectR8Result(programClasses, proguardConfig, Backend.DEX);
+      case R8_CF:
+        return inspectR8Result(programClasses, proguardConfig, Backend.CF);
     }
     throw new IllegalArgumentException("Unknown shrinker: " + mode);
   }
 
-  protected AndroidApp runR8(List<Class> programClasses, String proguardConfig) throws Exception {
-    return runR8(programClasses, proguardConfig, null);
+  protected AndroidApp runR8(List<Class> programClasses, String proguardConfig, Backend backend)
+      throws Exception {
+    return runR8(programClasses, proguardConfig, null, backend);
   }
 
   protected AndroidApp runR8(
-      List<Class> programClasses, String proguardConfig, Consumer<InternalOptions> configure)
+      List<Class> programClasses,
+      String proguardConfig,
+      Consumer<InternalOptions> configure,
+      Backend backend)
       throws Exception {
+    assert backend == Backend.DEX || backend == Backend.CF;
     AndroidApp app = readClassesAndAndriodJar(programClasses);
-    R8Command.Builder builder = ToolHelper.prepareR8CommandBuilder(app);
+    R8Command.Builder builder =
+        ToolHelper.prepareR8CommandBuilder(
+                app,
+                backend == Backend.DEX
+                    ? DexIndexedConsumer.emptyConsumer()
+                    : ClassFileConsumer.emptyConsumer())
+            .addLibraryFiles(
+                backend == Backend.DEX
+                    ? ToolHelper.getDefaultAndroidJar()
+                    : ToolHelper.getJava8RuntimeJar());
     ToolHelper.allowTestProguardOptions(builder);
     builder.addProguardConfiguration(ImmutableList.of(proguardConfig), Origin.unknown());
     return ToolHelper.runR8(builder.build(), configure);
   }
 
-  protected CodeInspector inspectR8Result(List<Class> programClasses, String proguardConfig)
-      throws Exception {
-    return new CodeInspector(runR8(programClasses, proguardConfig));
+  protected CodeInspector inspectR8Result(
+      List<Class> programClasses, String proguardConfig, Backend backend) throws Exception {
+    return new CodeInspector(runR8(programClasses, proguardConfig, backend));
   }
 
-  protected AndroidApp runR8Compat(List<Class> programClasses, String proguardConfig)
-      throws Exception {
+  protected AndroidApp runR8Compat(
+      List<Class> programClasses, String proguardConfig, Backend backend) throws Exception {
     CompatProguardCommandBuilder builder = new CompatProguardCommandBuilder(true);
     ToolHelper.allowTestProguardOptions(builder);
     builder.addProguardConfiguration(ImmutableList.of(proguardConfig), Origin.unknown());
     programClasses.forEach(
         clazz -> builder.addProgramFiles(ToolHelper.getClassFileForTestClass(clazz)));
-    builder.addLibraryFiles(ToolHelper.getAndroidJar(ToolHelper.getMinApiLevelForDexVm()));
-    builder.setProgramConsumer(DexIndexedConsumer.emptyConsumer());
+    if (backend == Backend.DEX) {
+      builder.addLibraryFiles(ToolHelper.getAndroidJar(ToolHelper.getMinApiLevelForDexVm()));
+      builder.setProgramConsumer(DexIndexedConsumer.emptyConsumer());
+    } else {
+      assert backend == Backend.CF;
+      builder.addLibraryFiles(ToolHelper.getJava8RuntimeJar());
+      builder.setProgramConsumer(ClassFileConsumer.emptyConsumer());
+    }
     return ToolHelper.runR8(builder.build());
   }
 
-  protected CodeInspector inspectR8CompatResult(List<Class> programClasses, String proguardConfig)
-      throws Exception {
-    return new CodeInspector(runR8Compat(programClasses, proguardConfig));
+  protected CodeInspector inspectR8CompatResult(
+      List<Class> programClasses, String proguardConfig, Backend backend) throws Exception {
+    return new CodeInspector(runR8Compat(programClasses, proguardConfig, backend));
   }
 
   protected AndroidApp runProguard5(
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/defaultctor/ImplicitlyKeptDefaultConstructorTest.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/defaultctor/ImplicitlyKeptDefaultConstructorTest.java
index 1464cb1..1f5ea77 100644
--- a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/defaultctor/ImplicitlyKeptDefaultConstructorTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/defaultctor/ImplicitlyKeptDefaultConstructorTest.java
@@ -10,13 +10,17 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.smali.ConstantFoldingTest.TriConsumer;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 class SuperClass {
 
@@ -90,7 +94,19 @@
   }
 }
 
-public class ImplicitlyKeptDefaultConstructorTest extends ProguardCompatabilityTestBase {
+@RunWith(Parameterized.class)
+public class ImplicitlyKeptDefaultConstructorTest extends ProguardCompatibilityTestBase {
+
+  private Backend backend;
+
+  @Parameterized.Parameters(name = "Backend: {0}")
+  public static Collection<Backend> data() {
+    return Arrays.asList(Backend.values());
+  }
+
+  public ImplicitlyKeptDefaultConstructorTest(Backend backend) {
+    this.backend = backend;
+  }
 
   private void checkPresentWithDefaultConstructor(ClassSubject clazz) {
     assertThat(clazz, isPresent());
@@ -131,7 +147,7 @@
       Class mainClass, List<Class> programClasses, String proguardConfiguration,
       TriConsumer<Class, List<Class>, CodeInspector> r8Checker,
       TriConsumer<Class, List<Class>, CodeInspector> proguardChecker) throws Exception {
-    CodeInspector inspector = inspectR8CompatResult(programClasses, proguardConfiguration);
+    CodeInspector inspector = inspectR8CompatResult(programClasses, proguardConfiguration, backend);
     r8Checker.accept(mainClass, programClasses, inspector);
 
     if (isRunProguard()) {
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java
index 0f1c519..23aad75 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java
@@ -10,7 +10,7 @@
 import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.naming.MemberNaming.MethodSignature;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.MethodSubject;
@@ -23,7 +23,7 @@
 import org.junit.runners.Parameterized.Parameters;
 
 @RunWith(Parameterized.class)
-public class IfOnAccessModifierTest extends ProguardCompatabilityTestBase {
+public class IfOnAccessModifierTest extends ProguardCompatibilityTestBase {
     private final static List<Class> CLASSES = ImmutableList.of(
         ClassForIf.class, ClassForSubsequent.class,
         MainForAccessModifierTest.class);
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAnnotationTest.java b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAnnotationTest.java
index 972b178..20363c5 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAnnotationTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAnnotationTest.java
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.shaking.ifrule;
 
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
@@ -14,7 +14,7 @@
 import org.junit.runners.Parameterized.Parameters;
 
 @RunWith(Parameterized.class)
-public class IfOnAnnotationTest extends ProguardCompatabilityTestBase {
+public class IfOnAnnotationTest extends ProguardCompatibilityTestBase {
   private final static List<Class> CLASSES = ImmutableList.of(
       UsedAnnotation.class, UnusedAnnotation.class,
       UsedAnnotationDependent.class, UnusedAnnotationDependent.class,
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnClassTest.java b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnClassTest.java
index cbafcf0..906788a 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnClassTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnClassTest.java
@@ -10,7 +10,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FieldSubject;
@@ -25,7 +25,7 @@
 import org.junit.runners.Parameterized.Parameters;
 
 @RunWith(Parameterized.class)
-public class IfOnClassTest extends ProguardCompatabilityTestBase {
+public class IfOnClassTest extends ProguardCompatibilityTestBase {
   private final static List<Class> CLASSES = ImmutableList.of(
       EmptyMainClassForIfOnClassTests.class,
       Precondition.class, DependentUser.class, Dependent.class);
@@ -60,9 +60,9 @@
   }
 
   @Override
-  protected CodeInspector inspectR8Result(List<Class> programClasses, String proguardConfig)
-      throws Exception {
-    return super.inspectR8Result(programClasses, adaptConfiguration(proguardConfig));
+  protected CodeInspector inspectR8Result(
+      List<Class> programClasses, String proguardConfig, Backend backend) throws Exception {
+    return super.inspectR8Result(programClasses, adaptConfiguration(proguardConfig), backend);
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnFieldTest.java b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnFieldTest.java
index 688c532..79c132b 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnFieldTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnFieldTest.java
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.shaking.ifrule;
 
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
@@ -15,7 +15,7 @@
 import org.junit.runners.Parameterized.Parameters;
 
 @RunWith(Parameterized.class)
-public class IfOnFieldTest extends ProguardCompatabilityTestBase {
+public class IfOnFieldTest extends ProguardCompatibilityTestBase {
   private final static List<Class> CLASSES = ImmutableList.of(
       D.class, D1.class, D2.class,
       R.class, R1.class, R2.class,
@@ -42,9 +42,9 @@
   }
 
   @Override
-  protected CodeInspector inspectR8Result(List<Class> programClasses, String proguardConfig)
-      throws Exception {
-    return super.inspectR8Result(programClasses, adaptConfiguration(proguardConfig));
+  protected CodeInspector inspectR8Result(
+      List<Class> programClasses, String proguardConfig, Backend backend) throws Exception {
+    return super.inspectR8Result(programClasses, adaptConfiguration(proguardConfig), backend);
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/inlining/IfRuleWithInlining.java b/src/test/java/com/android/tools/r8/shaking/ifrule/inlining/IfRuleWithInlining.java
index 7c7571f..fb9ce61 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/inlining/IfRuleWithInlining.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/inlining/IfRuleWithInlining.java
@@ -9,7 +9,7 @@
 import static org.junit.Assert.assertThat;
 
 import com.android.tools.r8.ToolHelper.ProcessResult;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -43,7 +43,7 @@
 }
 
 @RunWith(Parameterized.class)
-public class IfRuleWithInlining extends ProguardCompatabilityTestBase {
+public class IfRuleWithInlining extends ProguardCompatibilityTestBase {
   private final static List<Class> CLASSES = ImmutableList.of(
       A.class, D.class, Main.class);
 
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/verticalclassmerging/IfRuleWithVerticalClassMerging.java b/src/test/java/com/android/tools/r8/shaking/ifrule/verticalclassmerging/IfRuleWithVerticalClassMerging.java
index 617cb83..1cec850 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/verticalclassmerging/IfRuleWithVerticalClassMerging.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/verticalclassmerging/IfRuleWithVerticalClassMerging.java
@@ -9,7 +9,7 @@
 import static org.junit.Assert.assertThat;
 
 import com.android.tools.r8.ToolHelper.ProcessResult;
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
@@ -58,7 +58,7 @@
 }
 
 @RunWith(Parameterized.class)
-public class IfRuleWithVerticalClassMerging extends ProguardCompatabilityTestBase {
+public class IfRuleWithVerticalClassMerging extends ProguardCompatibilityTestBase {
   private final static List<Class> CLASSES = ImmutableList.of(
       A.class, B.class, C.class, D.class, Main.class);
 
@@ -84,8 +84,9 @@
   }
 
   @Override
-  protected AndroidApp runR8(List<Class> programClasses, String proguardConfig) throws Exception {
-    return super.runR8(programClasses, proguardConfig, this::configure);
+  protected AndroidApp runR8(List<Class> programClasses, String proguardConfig, Backend backend)
+      throws Exception {
+    return super.runR8(programClasses, proguardConfig, this::configure, backend);
   }
 
   private void check(AndroidApp app) throws Exception {
diff --git a/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepClassMembersTest.java b/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepClassMembersTest.java
index 61f4ce5..cff0675 100644
--- a/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepClassMembersTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/keepclassmembers/KeepClassMembersTest.java
@@ -11,7 +11,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatabilityTestBase;
+import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FieldSubject;
@@ -19,7 +19,7 @@
 import com.google.common.collect.ImmutableList;
 import org.junit.Test;
 
-public class KeepClassMembersTest extends ProguardCompatabilityTestBase {
+public class KeepClassMembersTest extends ProguardCompatibilityTestBase {
 
   private void check(CodeInspector inspector, Class mainClass, Class<?> staticClass,
       boolean forceProguardCompatibility, boolean fromProguard) {