Version 1.0.5

Merge: Add a workaround for main dex building with duplicate classes
CL: https://r8-review.googlesource.com/c/r8/+/14980
Change-Id: I6bd7e4da69dfbbc449bd94b389573bd63fff7b75
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java b/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
index 819ce91..b5e1a49 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
@@ -197,6 +197,7 @@
     internal.minimalMainDex = internal.debug;
     internal.removeSwitchMaps = false;
     internal.inlineAccessors = false;
+    internal.allowLibraryClassesToExtendProgramClasses = true;
     return internal;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 6d20eda..0849c7f 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 = "v1.0.4";
+  public static final String LABEL = "v1.0.5";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 870521d..fe2f063 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -504,7 +504,8 @@
       Diagnostic message = new StringDiagnostic("Library class " + context.toSourceString()
           + (holder.isInterface() ? " implements " : " extends ")
           + "program class " + type.toSourceString());
-      if (options.forceProguardCompatibility) {
+      if (options.forceProguardCompatibility
+          || options.allowLibraryClassesToExtendProgramClasses) {
         options.reporter.warning(message);
       } else {
         options.reporter.error(message);
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 7bb23d4..fa32b89 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -169,6 +169,10 @@
   public boolean disableAssertions = true;
   public boolean debugKeepRules = false;
 
+  // TODO(72312389): android.jar contains parts of JUnit and most developers include JUnit in
+  // their programs, which can lead to library classes extending program classes.
+  public boolean allowLibraryClassesToExtendProgramClasses = false;
+
   public boolean debug = false;
   public final TestingOptions testing = new TestingOptions();