Add an option to not fail when library extends program
Bug: b/215530220
Change-Id: I009f9602f0fbb860e10b7087ed80d07441717ce0
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 9fa5c88..4d7a6c1 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -2828,7 +2828,8 @@
+ (clazz.isInterface() ? " implements " : " extends ")
+ "program class "
+ type.toSourceString());
- if (forceProguardCompatibility) {
+ if (forceProguardCompatibility
+ || options.getTestingOptions().allowLibraryExtendsProgramInFullMode) {
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 67485aa..701fd7f 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -2338,11 +2338,13 @@
public boolean allowClassInliningOfSynthetics = true;
public boolean allowCodeReplacement =
- SystemPropertyUtils.parseSystemPropertyOrDefault(
- "com.android.tools.r8.allowCodeReplacement", true);
+ parseSystemPropertyOrDefault("com.android.tools.r8.allowCodeReplacement", true);
public boolean allowInjectedAnnotationMethods = false;
public boolean allowInliningOfOutlines = true;
public boolean allowInliningOfSynthetics = true;
+ public boolean allowLibraryExtendsProgramInFullMode =
+ parseSystemPropertyOrDefault(
+ "com.android.tools.r8.allowLibraryExtendsProgramInFullMode", false);
public boolean allowNullDynamicTypeInCodeScanner = true;
public boolean allowTypeErrors =
!Version.isDevelopmentVersion()