Version 1.5.36

Cherry-pick: Disable minification if -addconfigurationdebugging is set.
CL: https://r8-review.googlesource.com/c/r8/+/38601

Cherry-pick: Fix compilation warning from LocalClassRenamingTest
CL: https://r8-review.googlesource.com/c/r8/+/38584

Bug: 133167042, 73707846
Change-Id: I6bb1cc8ed1fe68554f2613e54642707b3388d0bc
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index ae8d4ae..5c0e9f7 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -660,13 +660,7 @@
 
       // Perform minification.
       NamingLens namingLens;
-      if (options.configurationDebugging) {
-        if (options.getProguardConfiguration().hasApplyMappingFile() || options.isMinifying()) {
-          options.reporter.info(new StringDiagnostic(
-              "Build is not being obfuscated due to the use of -addconfigurationdebugging"));
-        }
-        namingLens = NamingLens.getIdentityLens();
-      } else if (options.getProguardConfiguration().hasApplyMappingFile()) {
+      if (options.getProguardConfiguration().hasApplyMappingFile()) {
         SeedMapper seedMapper =
             SeedMapper.seedMapperFromFile(
                 options.reporter, options.getProguardConfiguration().getApplyMappingFile());
@@ -680,6 +674,7 @@
         namingLens = new Minifier(appView.withLiveness(), desugaredCallSites).run(timing);
         timing.end();
       } else {
+        // Rewrite signature annotations for applications that are not minified.
         if (appView.appInfo().hasLiveness()) {
           // TODO(b/124726014): Rewrite signature annotations in lens rewriting instead of here?
           new GenericSignatureRewriter(appView.withLiveness()).run(appView.appInfo().classes());
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 375cc0b..6fce43b 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.5.35";
+  public static final String LABEL = "1.5.36";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
index 9d0adec..bfad990 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -167,6 +167,10 @@
       this.applyMappingFile = file;
     }
 
+    public boolean hasApplyMappingFile() {
+      return applyMappingFile != null;
+    }
+
     public void setVerbose(boolean verbose) {
       this.verbose = verbose;
     }
@@ -276,6 +280,10 @@
       this.configurationDebugging = configurationDebugging;
     }
 
+    boolean isConfigurationDebugging() {
+      return configurationDebugging;
+    }
+
     public void setDontUseMixedCaseClassnames(boolean dontUseMixedCaseClassnames) {
       this.dontUseMixedCaseClassnames = dontUseMixedCaseClassnames;
     }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index a3d58a1..bc3b2ff 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -128,6 +128,20 @@
           configurationBuilder.getKeepParameterNamesOptionOrigin(),
           configurationBuilder.getKeepParameterNamesOptionPosition()));
     }
+    if (configurationBuilder.isConfigurationDebugging()) {
+      String suffix = "due to the use of -addconfigurationdebugging";
+      if (configurationBuilder.isObfuscating()) {
+        reporter.info(
+            new StringDiagnostic("Build is not being obfuscated " + suffix));
+        configurationBuilder.disableObfuscation();
+      }
+      if (configurationBuilder.hasApplyMappingFile()) {
+        reporter.info(
+            new StringDiagnostic(
+                "Applying the obfuscation map (-applymapping) is disabled " + suffix));
+        configurationBuilder.setApplyMappingFile(null);
+      }
+    }
   }
 
   /**
diff --git a/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java b/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java
index 4d82789..eb17213 100644
--- a/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java
+++ b/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java
@@ -29,7 +29,7 @@
     this.map = new HashMap<>();
   }
 
-  public static <K, V> TestMap of(K k, V v) {
+  public static <K, V> TestMap<K, V> of(K k, V v) {
     TestMap<K, V> m = new TestMap<>();
     m.map.put(k, v);
     return m;
diff --git a/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java
new file mode 100644
index 0000000..725fe66
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.shaking.addconfigurationdebugging;
+
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.utils.StringUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class B133167042 extends TestBase {
+
+  static class TestClass {
+    public static void main(String... args) {
+      boolean onAndroid = false;
+      try {
+        // Intentional typo not to set `onAndroid`.
+        Class.forName("android.os.Bui1d");
+        onAndroid = true;
+      } catch (ClassNotFoundException e) {
+        // Intentionally empty
+      }
+      System.out.println(onAndroid);
+    }
+  }
+
+  @Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters().withAllRuntimes().build();
+  }
+
+  private final TestParameters parameters;
+
+  public B133167042(TestParameters parameters) {
+    this.parameters = parameters;
+  }
+
+  @Test
+  public void test() throws Exception {
+    testForR8(parameters.getBackend())
+        .addProgramClasses(TestClass.class)
+        .addKeepMainRule(TestClass.class)
+        .addKeepRules("-addconfigurationdebugging")
+        .setMinApi(parameters.getRuntime())
+        .run(parameters.getRuntime(), TestClass.class)
+        .assertSuccessWithOutput(StringUtils.lines("false"));
+  }
+}