Introduce dedicated main-dex-list consumer.

Change-Id: I714cafcd816f9fa733b891edea3fec34ea3edaa8
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index b5db328..d2455f3 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -271,6 +271,9 @@
       boolean useDiscardedChecker = discardedChecker.orElse(true);
       boolean useMinification = minification.orElse(configuration.isObfuscating());
 
+      StringConsumer mainDexListConsumer =
+          mainDexListOutput != null ? new StringConsumer.FileConsumer(mainDexListOutput) : null;
+
       StringConsumer proguardMapConsumer =
           proguardMapOutput != null ? new StringConsumer.FileConsumer(proguardMapOutput) : null;
 
@@ -280,7 +283,7 @@
               getOutputPath(),
               getOutputMode(),
               mainDexKeepRules,
-              mainDexListOutput,
+              mainDexListConsumer,
               configuration,
               getMode(),
               getMinApiLevel(),
@@ -329,7 +332,7 @@
       "  --help                   # Print this message."));
 
   private final ImmutableList<ProguardConfigurationRule> mainDexKeepRules;
-  private final Path mainDexListOutput;
+  private final StringConsumer mainDexListConsumer;
   private final ProguardConfiguration proguardConfiguration;
   private final boolean useTreeShaking;
   private final boolean useDiscardedChecker;
@@ -461,7 +464,7 @@
       Path outputPath,
       OutputMode outputMode,
       ImmutableList<ProguardConfigurationRule> mainDexKeepRules,
-      Path mainDexListOutput,
+      StringConsumer mainDexListConsumer,
       ProguardConfiguration proguardConfiguration,
       CompilationMode mode,
       int minApiLevel,
@@ -481,7 +484,7 @@
     assert mainDexKeepRules != null;
     assert getOutputMode() == OutputMode.Indexed : "Only regular mode is supported in R8";
     this.mainDexKeepRules = mainDexKeepRules;
-    this.mainDexListOutput = mainDexListOutput;
+    this.mainDexListConsumer = mainDexListConsumer;
     this.proguardConfiguration = proguardConfiguration;
     this.useTreeShaking = useTreeShaking;
     this.useDiscardedChecker = useDiscardedChecker;
@@ -496,7 +499,7 @@
   private R8Command(boolean printHelp, boolean printVersion) {
     super(printHelp, printVersion);
     mainDexKeepRules = ImmutableList.of();
-    mainDexListOutput = null;
+    mainDexListConsumer = null;
     proguardConfiguration = null;
     useTreeShaking = false;
     useDiscardedChecker = false;
@@ -549,9 +552,8 @@
     assert !internal.verbose;
     internal.mainDexKeepRules = mainDexKeepRules;
     internal.minimalMainDex = internal.debug;
-    if (mainDexListOutput != null) {
-      internal.printMainDexListFile = mainDexListOutput;
-    }
+    internal.mainDexListConsumer = mainDexListConsumer;
+
     internal.outputMode = getOutputMode();
     if (internal.debug) {
       // TODO(zerny): Should we support removeSwitchMaps in debug mode? b/62936642