Merge "Remove Closer usage where is not mandatory"
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 0895ed8..ec040a5 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -34,6 +34,7 @@
     private Optional<Boolean> treeShaking = Optional.empty();
     private Optional<Boolean> minification = Optional.empty();
     private boolean ignoreMissingClasses = false;
+    private Path packageDistributionFile = null;
 
     private Builder() {
       super(CompilationMode.RELEASE);
@@ -127,7 +128,7 @@
      * Set a package distribution file resource.
      */
     public Builder setPackageDistributionFile(Path path) {
-      getAppBuilder().setPackageDistributionFile(path);
+      packageDistributionFile = path;
       return self();
     }
 
@@ -147,6 +148,10 @@
         throw new CompilationException(
             "Option --main-dex-list-output require --main-dex-rules and/or --main-dex-list");
       }
+      if (getMode() == CompilationMode.DEBUG && packageDistributionFile != null) {
+        throw new CompilationException(
+            "Package distribution file is not supported in debug mode");
+      }
     }
 
     @Override
@@ -189,6 +194,10 @@
         addLibraryFiles(configuration.getLibraryjars());
       }
 
+      if (packageDistributionFile != null) {
+        getAppBuilder().setPackageDistributionFile(packageDistributionFile);
+      }
+
       boolean useTreeShaking = treeShaking.orElse(configuration.isShrinking());
       boolean useMinification = minification.orElse(configuration.isObfuscating());
 
diff --git a/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java b/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java
index d1e46f3..6114f61 100644
--- a/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java
+++ b/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java
@@ -4,6 +4,7 @@
 package com.android.tools.r8.dex;
 
 import com.android.tools.r8.CompilationException;
+import com.android.tools.r8.CompilationMode;
 import com.android.tools.r8.R8Command;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.shaking.ProguardRuleParserException;
@@ -18,6 +19,7 @@
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 import org.junit.rules.TemporaryFolder;
 
 public class ExtraFileTest {
@@ -32,8 +34,11 @@
   @Rule
   public TemporaryFolder temp = ToolHelper.getTemporaryFolderForTest();
 
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
   @Test
-  public void splitMemberRebindingTwoFiles()
+  public void splitMemberRebindingTwoFilesRelease()
       throws IOException, ProguardRuleParserException, ExecutionException, CompilationException {
     if (!ToolHelper.artSupported()) {
       return;
@@ -46,6 +51,7 @@
     R8Command command =
         R8Command.builder()
             .addProgramFiles(original)
+            .setMode(CompilationMode.RELEASE)
             .setOutputPath(out)
             .setMinApiLevel(Constants.ANDROID_L_API) // Allow native multidex.
             .setProguardMapFile(proguardMap)
@@ -66,4 +72,24 @@
         null,
         null);
   }
+
+  @Test
+  public void splitMemberRebindingTwoFilesDebug()
+      throws IOException, ProguardRuleParserException, ExecutionException, CompilationException {
+    thrown.expect(CompilationException.class);
+    Path out = temp.getRoot().toPath();
+    Path original = Paths.get(EXAMPLE_DIR, EXAMPLE_DEX);
+    Path packageMap = Paths.get(ToolHelper.EXAMPLES_DIR, EXAMPLE_PACKAGE_MAP);
+    Path proguardMap = Paths.get(ToolHelper.EXAMPLES_DIR, EXAMPLE_PROGUARD_MAP);
+    R8Command command =
+        R8Command.builder()
+            .addProgramFiles(original)
+            .setMode(CompilationMode.DEBUG)
+            .setOutputPath(out)
+            .setMinApiLevel(Constants.ANDROID_L_API) // Allow native multidex.
+            .setProguardMapFile(proguardMap)
+            .setPackageDistributionFile(packageMap)
+            .build();
+    ToolHelper.runR8(command);
+  }
 }