Disable warnings for implicitly kept default constructors
Fixes: b/372749733
Change-Id: I2e1ef97658dbf09fd2b2f1491d680a84c42bf49b
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java
index 07bea60..02373b6 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java
@@ -11,6 +11,7 @@
public class ProguardConfigurationParserOptions {
private final OptionalBool enableEmptyMemberRulesToDefaultInitRuleConversion;
+ private final boolean enableEmptyMemberRulesToDefaultInitRuleConversionWarnings;
private final boolean enableExperimentalCheckEnumUnboxed;
private final boolean enableExperimentalConvertCheckNotNull;
private final boolean enableExperimentalWhyAreYouNotInlining;
@@ -18,6 +19,7 @@
ProguardConfigurationParserOptions(
OptionalBool enableEmptyMemberRulesToDefaultInitRuleConversion,
+ boolean enableEmptyMemberRulesToDefaultInitRuleConversionWarnings,
boolean enableExperimentalCheckEnumUnboxed,
boolean enableExperimentalConvertCheckNotNull,
boolean enableExperimentalWhyAreYouNotInlining,
@@ -28,6 +30,8 @@
this.enableTestingOptions = enableTestingOptions;
this.enableEmptyMemberRulesToDefaultInitRuleConversion =
enableEmptyMemberRulesToDefaultInitRuleConversion;
+ this.enableEmptyMemberRulesToDefaultInitRuleConversionWarnings =
+ enableEmptyMemberRulesToDefaultInitRuleConversionWarnings;
}
public static Builder builder() {
@@ -45,7 +49,7 @@
ProguardConfiguration.Builder configurationBuilder) {
assert isEmptyMemberRulesToDefaultInitRuleConversionEnabled(configurationBuilder);
return !configurationBuilder.isForceProguardCompatibility()
- && enableEmptyMemberRulesToDefaultInitRuleConversion.isUnknown();
+ && enableEmptyMemberRulesToDefaultInitRuleConversionWarnings;
}
public boolean isExperimentalCheckEnumUnboxedEnabled() {
@@ -67,6 +71,7 @@
public static class Builder {
private OptionalBool enableEmptyMemberRulesToDefaultInitRuleConversion = OptionalBool.UNKNOWN;
+ private boolean enableEmptyMemberRulesToDefaultInitRuleConversionWarnings = false;
private boolean enableExperimentalCheckEnumUnboxed;
private boolean enableExperimentalConvertCheckNotNull;
private boolean enableExperimentalWhyAreYouNotInlining;
@@ -77,6 +82,10 @@
parseSystemPropertyOrDefault(
"com.android.tools.r8.enableEmptyMemberRulesToDefaultInitRuleConversion",
OptionalBool.UNKNOWN);
+ enableEmptyMemberRulesToDefaultInitRuleConversionWarnings =
+ parseSystemPropertyOrDefault(
+ "com.android.tools.r8.enableEmptyMemberRulesToDefaultInitRuleConversionWarnings",
+ false);
enableExperimentalCheckEnumUnboxed =
parseSystemPropertyOrDefault(
"com.android.tools.r8.experimental.enablecheckenumunboxed", false);
@@ -124,6 +133,7 @@
public ProguardConfigurationParserOptions build() {
return new ProguardConfigurationParserOptions(
enableEmptyMemberRulesToDefaultInitRuleConversion,
+ enableEmptyMemberRulesToDefaultInitRuleConversionWarnings,
enableExperimentalCheckEnumUnboxed,
enableExperimentalConvertCheckNotNull,
enableExperimentalWhyAreYouNotInlining,
diff --git a/src/test/java/com/android/tools/r8/shaking/EmptyMemberRulesToDefaultInitRuleConversionTest.java b/src/test/java/com/android/tools/r8/shaking/EmptyMemberRulesToDefaultInitRuleConversionTest.java
index 564eac9..22a5d8a 100644
--- a/src/test/java/com/android/tools/r8/shaking/EmptyMemberRulesToDefaultInitRuleConversionTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/EmptyMemberRulesToDefaultInitRuleConversionTest.java
@@ -3,12 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
-import static com.android.tools.r8.DiagnosticsMatcher.diagnosticType;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentIf;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assume.assumeTrue;
@@ -17,9 +13,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.ThrowableConsumer;
-import com.android.tools.r8.errors.EmptyMemberRulesToDefaultInitRuleConversionDiagnostic;
import com.android.tools.r8.utils.BooleanUtils;
-import com.android.tools.r8.utils.StringUtils;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -74,28 +68,9 @@
testForR8(parameters.getBackend())
.addInnerClasses(getClass())
.addKeepClassRules(Main.class)
- .allowDiagnosticWarningMessages()
.clearEnableEmptyMemberRulesToDefaultInitRuleConversion()
.setMinApi(parameters)
- .compileWithExpectedDiagnostics(
- diagnostics ->
- diagnostics
- .assertOnlyWarnings()
- .assertWarningsMatch(
- allOf(
- diagnosticType(
- EmptyMemberRulesToDefaultInitRuleConversionDiagnostic.class),
- diagnosticMessage(
- equalTo(
- StringUtils.joinLines(
- "The current version of R8 implicitly keeps the default"
- + " constructor for Proguard configuration rules that"
- + " have no member pattern. If the following rule"
- + " should continue to keep the default constructor in"
- + " the next major version of R8, then it must be"
- + " augmented with the member pattern `{ void <init>();"
- + " }` to explicitly keep the default constructor:",
- "-keep class " + Main.class.getTypeName()))))))
+ .compile()
.inspect(inspector -> assertThat(inspector.clazz(Main.class).init(), isPresent()));
}