Revert "Proguard config builder: add keep-all rule/attrs if nothing specified."
This reverts commit 30ebba33c9f110a8cd3196cdea1c2c47df38bad8.
Reason for revert: breaks some tests: http://storage.googleapis.com/r8-test-results/c0ff09e6-bac6-4ded-b776-b5b15342d83b/test/index.html
Change-Id: I2e08b5950b9949879bcb87b5ef182aa0505217ab
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index f7ff70e..564aa9c 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -214,7 +214,7 @@
ProguardConfiguration.Builder configurationBuilder;
if (proguardConfigs.isEmpty()) {
- configurationBuilder = ProguardConfiguration.builder(factory);
+ configurationBuilder = ProguardConfiguration.builderInitializedWithDefaults(factory);
} else {
ProguardConfigurationParser parser =
new ProguardConfigurationParser(factory, getDiagnosticsHandler());
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 2bd956f..dc800a3 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -19,13 +19,13 @@
private final List<FilteredClassPath> injars = new ArrayList<>();
private final List<FilteredClassPath> libraryjars = new ArrayList<>();
- private PackageObfuscationMode packageObfuscationMode = PackageObfuscationMode.NONE;
- private String packagePrefix = "";
+ private PackageObfuscationMode packageObfuscationMode;
+ private String packagePrefix;
private boolean allowAccessModification;
private boolean ignoreWarnings;
- private boolean optimizing = true;
- private boolean obfuscating = true;
- private boolean shrinking = true;
+ private boolean optimizing;
+ private boolean obfuscating;
+ private boolean shrinking;
private boolean printUsage;
private Path printUsageFile;
private boolean printMapping;
@@ -34,7 +34,7 @@
private boolean verbose;
private String renameSourceFileAttribute;
private final List<String> keepAttributePatterns = new ArrayList<>();
- private ProguardClassNameList dontWarnPatterns = ProguardClassNameList.emptyList();
+ private ProguardClassNameList dontWarnPatterns;
protected final List<ProguardConfigurationRule> rules = new ArrayList<>();
private final DexItemFactory dexItemFactory;
private boolean printSeeds;
@@ -48,6 +48,36 @@
private Builder(DexItemFactory dexItemFactory) {
this.dexItemFactory = dexItemFactory;
+ resetProguardDefaults();
+ }
+
+ public void resetProguardDefaults() {
+ injars.clear();
+ libraryjars.clear();
+ packageObfuscationMode = PackageObfuscationMode.NONE;
+ packagePrefix = "";
+ allowAccessModification = false;
+ ignoreWarnings = false;
+ optimizing = true;
+ obfuscating = true;
+ shrinking = true;
+ printUsage = false;
+ printUsageFile = null;
+ printMapping = false;
+ printMappingFile = null;
+ applyMappingFile = null;
+ verbose = false;
+ renameSourceFileAttribute = null;
+ keepAttributePatterns.clear();
+ dontWarnPatterns = ProguardClassNameList.emptyList();
+ rules.clear();
+ printSeeds = false;
+ seedFile = null;
+ obfuscationDictionary = null;
+ classObfuscationDictionary = null;
+ packageObfuscationDictionary = null;
+ useUniqueClassMemberNames = false;
+ keepParameterNames = false;
}
public void addInjars(List<FilteredClassPath> injars) {
@@ -177,14 +207,6 @@
}
public ProguardConfiguration build() throws CompilationException {
- if (rules.isEmpty()) {
- setObfuscating(false);
- setShrinking(false);
- addRule(ProguardKeepRule.defaultKeepAllRule());
- }
- if (keepAttributePatterns.isEmpty()) {
- addKeepAttributePatterns(KeepAttributeOptions.KEEP_ALL);
- }
return new ProguardConfiguration(
dexItemFactory,
injars,
@@ -312,6 +334,15 @@
return new Builder(dexItemFactory);
}
+ public static Builder builderInitializedWithDefaults(DexItemFactory dexItemFactory) {
+ Builder builder = new Builder(dexItemFactory);
+ builder.setObfuscating(false);
+ builder.setShrinking(false);
+ builder.addKeepAttributePatterns(KeepAttributeOptions.KEEP_ALL);
+ builder.addRule(ProguardKeepRule.defaultKeepAllRule());
+ return builder;
+ }
+
public DexItemFactory getDexItemFactory() {
return dexItemFactory;
}
@@ -422,7 +453,7 @@
public static ProguardConfiguration defaultConfiguration(DexItemFactory dexItemFactory) {
try {
- return builder(dexItemFactory).build();
+ return builderInitializedWithDefaults(dexItemFactory).build();
} catch(CompilationException e) {
// Building a builder initialized with defaults will not throw CompilationException because
// DictionaryReader is called with empty lists.
diff --git a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
index 029e083..427c253 100644
--- a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
+++ b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
@@ -21,6 +21,8 @@
setUp(
null,
pg -> {
+ pg.resetProguardDefaults();
+ pg.addRule(ProguardKeepRule.defaultKeepAllRule());
pg.setRenameSourceFileAttribute(TEST_FILE);
pg.addKeepAttributePatterns(ImmutableList.of("SourceFile", "LineNumberTable"));
});