Cleanup dump options

This removes dumpInputToFile and dumpInputToDirectory from InternalOptions and instead makes an instance of DumpInputFlags available from InternalOptions.

This also removes the `skipDump` flag from the command builders by instead setting DumpInputFlags.noDump().

Bug: b/236449152
Change-Id: I9c92126d4ca17640ff9936cb1a60279011828970
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index 7e93145..08c7a84 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -245,7 +245,7 @@
     private List<AssertionsConfiguration> assertionsConfiguration = new ArrayList<>();
     private List<Consumer<Inspector>> outputInspections = new ArrayList<>();
     protected StringConsumer proguardMapConsumer = null;
-    private DumpInputFlags dumpInputFlags = DumpInputFlags.noDump();
+    private DumpInputFlags dumpInputFlags = DumpInputFlags.getDefault();
     private MapIdProvider mapIdProvider = null;
     private SourceFileProvider sourceFileProvider = null;
     private boolean isAndroidPlatformBuild = false;
@@ -664,6 +664,15 @@
       return isAndroidPlatformBuild;
     }
 
+    /**
+     * Allow to skip to dump into file and dump into directory instruction, this is primarily used
+     * for chained compilation in L8 so there are no duplicated dumps.
+     */
+    B skipDump() {
+      dumpInputFlags = DumpInputFlags.noDump();
+      return self();
+    }
+
     B dumpInputToFile(Path file) {
       dumpInputFlags = DumpInputFlags.dumpToFile(file);
       return self();
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index 7ea383c..76c2966 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -90,7 +90,6 @@
     private String synthesizedClassPrefix = "";
     private boolean enableMainDexListCheck = true;
     private boolean minimalMainDex = false;
-    private boolean skipDump = false;
     private final List<ProguardConfigurationSource> mainDexRules = new ArrayList<>();
     private boolean enableMissingLibraryApiModeling = false;
 
@@ -265,15 +264,6 @@
       return self();
     }
 
-    /**
-     * Allow to skip to dump into file and dump into directory instruction, this is primarily used
-     * for chained compilation in L8 so there are no duplicated dumps.
-     */
-    Builder skipDump() {
-      skipDump = true;
-      return self();
-    }
-
     @Override
     Builder self() {
       return this;
@@ -427,7 +417,6 @@
           getAssertionsConfiguration(),
           getOutputInspections(),
           synthesizedClassPrefix,
-          skipDump,
           enableMainDexListCheck,
           minimalMainDex,
           mainDexKeepRules,
@@ -447,7 +436,6 @@
   private final StringConsumer desugaredLibraryKeepRuleConsumer;
   private final DesugaredLibrarySpecification desugaredLibrarySpecification;
   private final String synthesizedClassPrefix;
-  private final boolean skipDump;
   private final boolean enableMainDexListCheck;
   private final boolean minimalMainDex;
   private final ImmutableList<ProguardConfigurationRule> mainDexKeepRules;
@@ -519,7 +507,6 @@
       List<AssertionsConfiguration> assertionsConfiguration,
       List<Consumer<Inspector>> outputInspections,
       String synthesizedClassPrefix,
-      boolean skipDump,
       boolean enableMainDexListCheck,
       boolean minimalMainDex,
       ImmutableList<ProguardConfigurationRule> mainDexKeepRules,
@@ -554,7 +541,6 @@
     this.desugaredLibraryKeepRuleConsumer = desugaredLibraryKeepRuleConsumer;
     this.desugaredLibrarySpecification = desugaredLibrarySpecification;
     this.synthesizedClassPrefix = synthesizedClassPrefix;
-    this.skipDump = skipDump;
     this.enableMainDexListCheck = enableMainDexListCheck;
     this.minimalMainDex = minimalMainDex;
     this.mainDexKeepRules = mainDexKeepRules;
@@ -571,7 +557,6 @@
     desugaredLibraryKeepRuleConsumer = null;
     desugaredLibrarySpecification = null;
     synthesizedClassPrefix = null;
-    skipDump = false;
     enableMainDexListCheck = true;
     minimalMainDex = false;
     mainDexKeepRules = null;
@@ -669,7 +654,7 @@
 
     internal.configureAndroidPlatformBuild(getAndroidPlatformBuild());
 
-    internal.setDumpInputFlags(getDumpInputFlags(), skipDump);
+    internal.setDumpInputFlags(getDumpInputFlags());
     internal.dumpOptions = dumpOptions();
 
     return internal;
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index dce9604..b9fe11b 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -217,7 +217,7 @@
     internal.apiModelingOptions().disableApiCallerIdentification();
     internal.apiModelingOptions().disableMissingApiModeling();
 
-    internal.setDumpInputFlags(getDumpInputFlags(), false);
+    internal.setDumpInputFlags(getDumpInputFlags());
     internal.dumpOptions = dumpOptions();
 
     return internal;
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 1496f40..d2ec70f 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -114,7 +114,6 @@
     private InputDependencyGraphConsumer inputDependencyGraphConsumer = null;
     private final List<FeatureSplit> featureSplits = new ArrayList<>();
     private String synthesizedClassPrefix = "";
-    private boolean skipDump = false;
     private boolean enableMissingLibraryApiModeling = false;
 
     private final ProguardConfigurationParserOptions.Builder parserOptionsBuilder =
@@ -286,15 +285,6 @@
     }
 
     /**
-     * Allow to skip to dump into file and dump into directory instruction, this is primarily used
-     * for chained compilation in L8 so there are no duplicated dumps.
-     */
-    Builder skipDump() {
-      skipDump = true;
-      return self();
-    }
-
-    /**
      * Set a consumer for receiving the proguard usage information.
      *
      * <p>Note that any subsequent calls to this method will replace the previous setting.
@@ -632,7 +622,6 @@
               getAssertionsConfiguration(),
               getOutputInspections(),
               synthesizedClassPrefix,
-              skipDump,
               getThreadCount(),
               getDumpInputFlags(),
               getMapIdProvider(),
@@ -734,7 +723,6 @@
   private final DesugaredLibrarySpecification desugaredLibrarySpecification;
   private final FeatureSplitConfiguration featureSplitConfiguration;
   private final String synthesizedClassPrefix;
-  private final boolean skipDump;
   private final boolean enableMissingLibraryApiModeling;
 
   /** Get a new {@link R8Command.Builder}. */
@@ -820,7 +808,6 @@
       List<AssertionsConfiguration> assertionsConfiguration,
       List<Consumer<Inspector>> outputInspections,
       String synthesizedClassPrefix,
-      boolean skipDump,
       int threadCount,
       DumpInputFlags dumpInputFlags,
       MapIdProvider mapIdProvider,
@@ -865,7 +852,6 @@
     this.desugaredLibrarySpecification = desugaredLibrarySpecification;
     this.featureSplitConfiguration = featureSplitConfiguration;
     this.synthesizedClassPrefix = synthesizedClassPrefix;
-    this.skipDump = skipDump;
     this.enableMissingLibraryApiModeling = enableMissingLibraryApiModeling;
   }
 
@@ -889,7 +875,6 @@
     desugaredLibrarySpecification = null;
     featureSplitConfiguration = null;
     synthesizedClassPrefix = null;
-    skipDump = false;
     enableMissingLibraryApiModeling = false;
   }
 
@@ -1053,7 +1038,7 @@
       internal.threadCount = getThreadCount();
     }
 
-    internal.setDumpInputFlags(getDumpInputFlags(), skipDump);
+    internal.setDumpInputFlags(getDumpInputFlags());
     internal.dumpOptions = dumpOptions();
 
     return internal;
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
index f00f7fb..c5f80d7 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
@@ -41,6 +41,7 @@
 import com.android.tools.r8.utils.ClasspathClassCollection;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.DexVersion;
+import com.android.tools.r8.utils.DumpInputFlags;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.LibraryClassCollection;
 import com.android.tools.r8.utils.MainDexListParser;
@@ -49,9 +50,7 @@
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -113,7 +112,7 @@
         inputApp.getProguardMapInputData(),
         executorService,
         ProgramClassCollection.defaultConflictResolver(options.reporter),
-        false);
+        DumpInputFlags.noDump());
   }
 
   public final LazyLoadedDexApplication read(
@@ -131,19 +130,17 @@
       ExecutorService executorService,
       ProgramClassConflictResolver resolver)
       throws IOException {
-    return read(proguardMap, executorService, resolver, true);
+    return read(proguardMap, executorService, resolver, options.getDumpInputFlags());
   }
 
   public final LazyLoadedDexApplication read(
       StringResource proguardMap,
       ExecutorService executorService,
       ProgramClassConflictResolver resolver,
-      boolean shouldDump)
+      DumpInputFlags dumpInputFlags)
       throws IOException {
     assert verifyMainDexOptionsCompatible(inputApp, options);
-    if (shouldDump) {
-      dumpApplication();
-    }
+    dumpApplication(dumpInputFlags);
 
     if (options.testing.verifyInputs) {
       inputApp.validateInputs();
@@ -184,31 +181,19 @@
     return builder.build();
   }
 
-  private void dumpApplication() throws IOException {
-    Path dumpOutput = null;
-    boolean cleanDump = false;
-    if (options.dumpInputToFile != null) {
-      dumpOutput = Paths.get(options.dumpInputToFile);
-    } else if (options.dumpInputToDirectory != null) {
-      dumpOutput =
-          Paths.get(options.dumpInputToDirectory).resolve("dump" + System.nanoTime() + ".zip");
-    } else if (options.testing.dumpAll) {
-      cleanDump = true;
-      dumpOutput = Paths.get("/tmp").resolve("dump" + System.nanoTime() + ".zip");
+  private void dumpApplication(DumpInputFlags dumpInputFlags) {
+    if (dumpInputFlags.isNoDump()) {
+      return;
     }
-    if (dumpOutput != null) {
-      timing.begin("ApplicationReader.dump");
-      inputApp.dump(dumpOutput, options.dumpOptions, options.reporter, options.dexItemFactory());
-      if (cleanDump) {
-        Files.delete(dumpOutput);
-      }
-      timing.end();
-      Diagnostic message = new StringDiagnostic("Dumped compilation inputs to: " + dumpOutput);
-      if (options.dumpInputToFile != null) {
-        throw options.reporter.fatalError(message);
-      } else if (!cleanDump) {
-        options.reporter.info(message);
-      }
+    Path dumpOutput = dumpInputFlags.getDumpPath();
+    timing.begin("ApplicationReader.dump");
+    inputApp.dump(dumpOutput, options.dumpOptions, options.reporter, options.dexItemFactory());
+    timing.end();
+    Diagnostic message = new StringDiagnostic("Dumped compilation inputs to: " + dumpOutput);
+    if (dumpInputFlags.shouldFailCompilation()) {
+      throw options.reporter.fatalError(message);
+    } else {
+      options.reporter.info(message);
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/utils/DumpInputFlags.java b/src/main/java/com/android/tools/r8/utils/DumpInputFlags.java
index d37de80..905ba91 100644
--- a/src/main/java/com/android/tools/r8/utils/DumpInputFlags.java
+++ b/src/main/java/com/android/tools/r8/utils/DumpInputFlags.java
@@ -3,53 +3,83 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.utils;
 
+import com.android.tools.r8.errors.Unreachable;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 
 public abstract class DumpInputFlags {
 
+  private static final String DUMP_INPUT_TO_FILE_PROPERTY = "com.android.tools.r8.dumpinputtofile";
+  private static final String DUMP_INPUT_TO_DIRECTORY_PROPERTY =
+      "com.android.tools.r8.dumpinputtodirectory";
+
+  public static DumpInputFlags getDefault() {
+    String dumpInputToFile = System.getProperty(DUMP_INPUT_TO_FILE_PROPERTY);
+    if (dumpInputToFile != null) {
+      return dumpToFile(Paths.get(dumpInputToFile));
+    }
+    String dumpInputToDirectory = System.getProperty(DUMP_INPUT_TO_DIRECTORY_PROPERTY);
+    if (dumpInputToDirectory != null) {
+      return dumpToDirectory(Paths.get(dumpInputToDirectory));
+    }
+    return noDump();
+  }
+
   public static DumpInputFlags noDump() {
     return new DumpInputFlags() {
+
       @Override
-      Path getDumpInputToFile() {
-        return null;
+      public Path getDumpPath() {
+        throw new Unreachable();
       }
 
       @Override
-      Path getDumpInputToDirectory() {
-        return null;
+      public boolean isNoDump() {
+        return true;
+      }
+
+      @Override
+      public boolean shouldFailCompilation() {
+        throw new Unreachable();
       }
     };
   }
 
   public static DumpInputFlags dumpToFile(Path file) {
     return new DumpInputFlags() {
+
       @Override
-      Path getDumpInputToFile() {
+      public Path getDumpPath() {
         return file;
       }
 
       @Override
-      Path getDumpInputToDirectory() {
-        return null;
+      public boolean shouldFailCompilation() {
+        return true;
       }
     };
   }
 
-  public static DumpInputFlags dumpToDirectory(Path file) {
+  public static DumpInputFlags dumpToDirectory(Path directory) {
     return new DumpInputFlags() {
+
       @Override
-      Path getDumpInputToFile() {
-        return null;
+      public Path getDumpPath() {
+        return directory.resolve("dump" + System.nanoTime() + ".zip");
       }
 
       @Override
-      Path getDumpInputToDirectory() {
-        return file;
+      public boolean shouldFailCompilation() {
+        return false;
       }
     };
   }
 
-  abstract Path getDumpInputToFile();
+  public abstract Path getDumpPath();
 
-  abstract Path getDumpInputToDirectory();
+  public boolean isNoDump() {
+    return false;
+  }
+
+  public abstract boolean shouldFailCompilation();
 }
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index d338a11..7759cc3 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -278,10 +278,6 @@
   // To print memory one also have to enable printtimes.
   public boolean printMemory = System.getProperty("com.android.tools.r8.printmemory") != null;
 
-  public String dumpInputToFile = System.getProperty("com.android.tools.r8.dumpinputtofile");
-  public String dumpInputToDirectory =
-      System.getProperty("com.android.tools.r8.dumpinputtodirectory");
-
   // Flag to toggle if DEX code objects should pass-through without IR processing.
   public boolean passthroughDexCode = false;
 
@@ -414,6 +410,8 @@
   public boolean emitPermittedSubclassesAnnotationsInDex =
       System.getProperty("com.android.tools.r8.emitPermittedSubclassesAnnotationsInDex") != null;
 
+  private DumpInputFlags dumpInputFlags = DumpInputFlags.getDefault();
+
   // Contain the contents of the build properties file from the compiler command.
   public DumpOptions dumpOptions;
 
@@ -462,19 +460,8 @@
     return marker;
   }
 
-  public void setDumpInputFlags(DumpInputFlags dumpInputFlags, boolean skipDump) {
-    if (skipDump) {
-      dumpInputToDirectory = null;
-      dumpInputToFile = null;
-      return;
-    }
-
-    if (dumpInputFlags.getDumpInputToFile() != null) {
-      dumpInputToFile = dumpInputFlags.getDumpInputToFile().toString();
-    }
-    if (dumpInputFlags.getDumpInputToDirectory() != null) {
-      dumpInputToDirectory = dumpInputFlags.getDumpInputToDirectory().toString();
-    }
+  public void setDumpInputFlags(DumpInputFlags dumpInputFlags) {
+    this.dumpInputFlags = dumpInputFlags;
   }
 
   public boolean hasConsumer() {
@@ -872,6 +859,10 @@
     return cfCodeAnalysisOptions;
   }
 
+  public DumpInputFlags getDumpInputFlags() {
+    return dumpInputFlags;
+  }
+
   public OpenClosedInterfacesOptions getOpenClosedInterfacesOptions() {
     return openClosedInterfacesOptions;
   }
@@ -1953,10 +1944,6 @@
 
     public boolean disableShortenLiveRanges = false;
 
-    // Force each call of application read to dump its inputs to a file, which is subsequently
-    // deleted. Useful to check that our dump functionality does not cause compilation failure.
-    public boolean dumpAll = false;
-
     // Option for testing outlining with interface array arguments, see b/132420510.
     public boolean allowOutlinerInterfaceArrayArguments = false;
 
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryDumpInputsTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryDumpInputsTest.java
index 6200ec5..1e475ce 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryDumpInputsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryDumpInputsTest.java
@@ -14,6 +14,7 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
 import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
+import com.android.tools.r8.utils.DumpInputFlags;
 import com.android.tools.r8.utils.ZipUtils;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -58,7 +59,8 @@
     testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
         .addProgramClasses(TestClass.class)
         .addKeepMainRule(TestClass.class)
-        .addOptionsModification(options -> options.dumpInputToDirectory = dumpDir.toString())
+        .addOptionsModification(
+            options -> options.setDumpInputFlags(DumpInputFlags.dumpToDirectory(dumpDir)))
         .allowDiagnosticInfoMessages()
         .compile()
         .inspectDiagnosticMessages(
diff --git a/src/test/java/com/android/tools/r8/dump/DumpInputsTest.java b/src/test/java/com/android/tools/r8/dump/DumpInputsTest.java
index 05824cc..9fca511 100644
--- a/src/test/java/com/android/tools/r8/dump/DumpInputsTest.java
+++ b/src/test/java/com/android/tools/r8/dump/DumpInputsTest.java
@@ -3,16 +3,19 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.dump;
 
+import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.DumpInputFlags;
 import com.android.tools.r8.utils.ZipUtils;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -40,6 +43,28 @@
   }
 
   @Test
+  public void testDumpToFileOptionsModification() throws Exception {
+    Path dump = temp.newFolder().toPath().resolve("dump.zip");
+    try {
+      testForR8(parameters.getBackend())
+          .addProgramClasses(TestClass.class)
+          .addLibraryFiles(ToolHelper.getJava8RuntimeJar())
+          .addKeepMainRule(TestClass.class)
+          .addOptionsModification(
+              options -> options.setDumpInputFlags(DumpInputFlags.dumpToFile(dump)))
+          .allowDiagnosticErrorMessages()
+          .compileWithExpectedDiagnostics(
+              diagnostics ->
+                  diagnostics.assertErrorsMatch(
+                      diagnosticMessage(containsString("Dumped compilation inputs to:"))));
+      fail("Expected compilation to fail");
+    } catch (CompilationFailedException e) {
+      // Expected.
+    }
+    verifyDump(dump, false, true);
+  }
+
+  @Test
   public void testDumpToFileSystemProperty() throws Exception {
     Path dump = temp.newFolder().toPath().resolve("dump.zip");
     try {
@@ -47,11 +72,11 @@
           .addJvmFlag("-Dcom.android.tools.r8.dumpinputtofile=" + dump)
           .addProgramClasses(TestClass.class)
           .compile();
+      fail("Expected external compilation to exit");
     } catch (AssertionError e) {
-      verifyDump(dump, false, true);
-      return;
+      // Expected.
     }
-    fail("Expected external compilation to exit");
+    verifyDump(dump, false, true);
   }
 
   @Test
@@ -70,7 +95,7 @@
   }
 
   @Test
-  public void testDumpToDirectorySystemProperty() throws Exception {
+  public void testDumpToDirectoryOptionsModification() throws Exception {
     Path dumpDir = temp.newFolder().toPath();
     testForR8(parameters.getBackend())
         .addProgramClasses(TestClass.class)
@@ -78,14 +103,28 @@
         // Ensure the compilation and run can actually succeed.
         .addLibraryFiles(ToolHelper.getJava8RuntimeJar())
         .addKeepMainRule(TestClass.class)
-        .addOptionsModification(options -> options.dumpInputToDirectory = dumpDir.toString())
+        .addOptionsModification(
+            options -> options.setDumpInputFlags(DumpInputFlags.dumpToDirectory(dumpDir)))
         .allowDiagnosticInfoMessages()
         .compile()
         .assertAllInfoMessagesMatch(containsString("Dumped compilation inputs to:"))
         .run(parameters.getRuntime(), TestClass.class)
         .assertSuccessWithOutputLines("Hello, world");
+    verifyDumpDirectory(dumpDir, false, true);
+  }
 
-    verifyDumpDirectory(dumpDir, false, false);
+  @Test
+  public void testDumpToDirectorySystemProperty() throws Exception {
+    Path dumpDir = temp.newFolder().toPath();
+    testForExternalR8(parameters.getBackend(), parameters.getRuntime())
+        .addJvmFlag("-Dcom.android.tools.r8.dumpinputtodirectory=" + dumpDir.toString())
+        .addProgramClasses(TestClass.class)
+        // Setting a directory will allow compilation to continue.
+        // Ensure the compilation and run can actually succeed.
+        .addLibraryFiles(ToolHelper.getJava8RuntimeJar())
+        .addKeepMainRule(TestClass.class)
+        .compile();
+    verifyDumpDirectory(dumpDir, false, true);
   }
 
   @Test
@@ -95,7 +134,6 @@
         .dumpInputToDirectory(dumpDir.toString())
         .addProgramClasses(TestClass.class)
         .compile();
-
     verifyDumpDirectory(dumpDir, false, false);
   }
 
diff --git a/src/test/java/com/android/tools/r8/dump/DumpMainDexInputsTest.java b/src/test/java/com/android/tools/r8/dump/DumpMainDexInputsTest.java
index 1d01be7..f0372a8 100644
--- a/src/test/java/com/android/tools/r8/dump/DumpMainDexInputsTest.java
+++ b/src/test/java/com/android/tools/r8/dump/DumpMainDexInputsTest.java
@@ -14,6 +14,7 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.DumpInputFlags;
 import com.android.tools.r8.utils.FileUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.ZipUtils;
@@ -103,7 +104,8 @@
         .addMainDexListFiles(
             mainDexListForMainDexFile1AndMainDexFile2(), mainDexListForMainDexFile3())
         .addMainDexListClasses(MainDexClass1.class, MainDexClass2.class, TestClass.class)
-        .addOptionsModification(options -> options.dumpInputToDirectory = dumpDir.toString())
+        .addOptionsModification(
+            options -> options.setDumpInputFlags(DumpInputFlags.dumpToDirectory(dumpDir)))
         .compileWithExpectedDiagnostics(
             diagnostics ->
                 diagnostics
@@ -131,7 +133,8 @@
         .addInnerClasses(DumpMainDexInputsTest.class)
         .addMainDexRulesFiles(newMainDexRulesPath1(), newMainDexRulesPath2())
         .addMainDexKeepClassRules(MainDexClass1.class, MainDexClass2.class, TestClass.class)
-        .addOptionsModification(options -> options.dumpInputToDirectory = dumpDir.toString())
+        .addOptionsModification(
+            options -> options.setDumpInputFlags(DumpInputFlags.dumpToDirectory(dumpDir)))
         .compile()
         .assertAllInfoMessagesMatch(containsString("Dumped compilation inputs to:"))
         .run(parameters.getRuntime(), TestClass.class)
@@ -150,7 +153,8 @@
         .addInnerClasses(DumpMainDexInputsTest.class)
         .addMainDexRuleFiles(newMainDexRulesPath1(), newMainDexRulesPath2())
         .addMainDexKeepClassRules(MainDexClass1.class, MainDexClass2.class, TestClass.class)
-        .addOptionsModification(options -> options.dumpInputToDirectory = dumpDir.toString())
+        .addOptionsModification(
+            options -> options.setDumpInputFlags(DumpInputFlags.dumpToDirectory(dumpDir)))
         .addKeepAllClassesRule()
         .allowDiagnosticMessages()
         .compile()