Passthrough directives accepting ProguardClassNameList in rule filtering
Change-Id: I3b2cf8a839238ceacd1d964f628c7fe6b979d3bb
diff --git a/src/main/java/com/android/tools/r8/processkeeprules/FilteredKeepRulesBuilder.java b/src/main/java/com/android/tools/r8/processkeeprules/FilteredKeepRulesBuilder.java
index 5a7210b..6deb177 100644
--- a/src/main/java/com/android/tools/r8/processkeeprules/FilteredKeepRulesBuilder.java
+++ b/src/main/java/com/android/tools/r8/processkeeprules/FilteredKeepRulesBuilder.java
@@ -79,6 +79,33 @@
}
@Override
+ public void addAdaptClassStringsPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
+ ensureNewlineAfterComment();
+ write(parser, positionStart);
+ }
+
+ @Override
+ public void addDontNotePattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
+ ensureNewlineAfterComment();
+ write(parser, positionStart);
+ }
+
+ @Override
+ public void addDontWarnPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
+ ensureNewlineAfterComment();
+ write(parser, positionStart);
+ }
+
+ @Override
public void addKeepAttributePatterns(
List<String> attributesPatterns,
ProguardConfigurationSourceParser parser,
@@ -89,6 +116,15 @@
}
@Override
+ public void addKeepPackageNamesPattern(
+ ProguardClassNameList proguardClassNameList,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
+ ensureNewlineAfterComment();
+ write(parser, positionStart);
+ }
+
+ @Override
public void addRule(ProguardConfigurationRule rule) {
ensureNewlineAfterComment();
write(rule.getSource());
@@ -198,21 +234,12 @@
}
@Override
- public void addKeepPackageNamesPattern(ProguardClassNameList proguardClassNameList) {}
-
- @Override
public void setKeepParameterNames(ProguardConfigurationSourceParser parser, Position position) {}
@Override
public void addParsedConfiguration(String s) {}
@Override
- public void addDontWarnPattern(ProguardClassNameList pattern) {}
-
- @Override
- public void addDontNotePattern(ProguardClassNameList pattern) {}
-
- @Override
public void setApplyMappingFile(
Path path, ProguardConfigurationSourceParser parser, Position position) {}
@@ -241,9 +268,6 @@
Path path, ProguardConfigurationSourceParser parser, Position position) {}
@Override
- public void addAdaptClassStringsPattern(ProguardClassNameList pattern) {}
-
- @Override
public void addAdaptResourceFileContents(ProguardPathList pattern) {}
@Override
diff --git a/src/main/java/com/android/tools/r8/processkeeprules/ValidateLibraryConsumerRulesKeepRuleProcessor.java b/src/main/java/com/android/tools/r8/processkeeprules/ValidateLibraryConsumerRulesKeepRuleProcessor.java
index f02a248..e83fe7d 100644
--- a/src/main/java/com/android/tools/r8/processkeeprules/ValidateLibraryConsumerRulesKeepRuleProcessor.java
+++ b/src/main/java/com/android/tools/r8/processkeeprules/ValidateLibraryConsumerRulesKeepRuleProcessor.java
@@ -111,7 +111,10 @@
}
@Override
- public void addKeepPackageNamesPattern(ProguardClassNameList proguardClassNameList) {}
+ public void addKeepPackageNamesPattern(
+ ProguardClassNameList proguardClassNameList,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {}
@Override
public void setKeepParameterNames(ProguardConfigurationSourceParser parser, Position position) {}
@@ -131,10 +134,16 @@
ProguardConfigurationSourceParser parser, TextPosition positionStart) {}
@Override
- public void addDontWarnPattern(ProguardClassNameList pattern) {}
+ public void addDontWarnPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {}
@Override
- public void addDontNotePattern(ProguardClassNameList pattern) {}
+ public void addDontNotePattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {}
@Override
public void enablePrintConfiguration(
@@ -213,7 +222,10 @@
}
@Override
- public void addAdaptClassStringsPattern(ProguardClassNameList pattern) {}
+ public void addAdaptClassStringsPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {}
@Override
public void addAdaptResourceFileContents(ProguardPathList pattern) {}
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 e8b2089..0148092 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -221,7 +221,10 @@
}
@Override
- public void addKeepPackageNamesPattern(ProguardClassNameList pattern) {
+ public void addKeepPackageNamesPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
keepPackageNamesPatterns.addPattern(pattern);
}
@@ -270,12 +273,18 @@
}
@Override
- public void addDontWarnPattern(ProguardClassNameList pattern) {
+ public void addDontWarnPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
dontWarnPatterns.addPattern(pattern);
}
@Override
- public void addDontNotePattern(ProguardClassNameList pattern) {
+ public void addDontNotePattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
dontNotePatterns.addPattern(pattern);
}
@@ -319,7 +328,10 @@
}
@Override
- public void addAdaptClassStringsPattern(ProguardClassNameList pattern) {
+ public void addAdaptClassStringsPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart) {
adaptClassStrings.addPattern(pattern);
}
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 97dc3b3..7616e02 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -312,7 +312,9 @@
} else if (acceptString("keepattributes")) {
parseKeepAttributes(optionStart);
} else if (acceptString("keeppackagenames")) {
- parseClassFilter(configurationConsumer::addKeepPackageNamesPattern);
+ ProguardClassNameList keepPackageNamePatterns = parseOptionalClassFilter();
+ configurationConsumer.addKeepPackageNamesPattern(
+ keepPackageNamePatterns, this, optionStart);
} else if (acceptString("keepparameternames")) {
configurationConsumer.setKeepParameterNames(this, getPosition(optionStart));
} else if (acceptString("checkdiscard")) {
@@ -355,9 +357,11 @@
} else if (acceptString("ignorewarnings")) {
configurationConsumer.setIgnoreWarnings(this, optionStart);
} else if (acceptString("dontwarn")) {
- parseClassFilter(configurationConsumer::addDontWarnPattern);
+ ProguardClassNameList dontWarnPattern = parseOptionalClassFilter();
+ configurationConsumer.addDontWarnPattern(dontWarnPattern, this, optionStart);
} else if (acceptString("dontnote")) {
- parseClassFilter(configurationConsumer::addDontNotePattern);
+ ProguardClassNameList dontNotePattern = parseOptionalClassFilter();
+ configurationConsumer.addDontNotePattern(dontNotePattern, this, optionStart);
} else if (acceptString(REPACKAGE_CLASSES)) {
if (configurationConsumer.getPackageObfuscationMode() == PackageObfuscationMode.FLATTEN) {
warnOverridingOptions(REPACKAGE_CLASSES, FLATTEN_PACKAGE_HIERARCHY, optionStart);
@@ -466,7 +470,9 @@
optionStart, InlineRule.builder().setType(InlineRuleType.ALWAYS));
configurationConsumer.addRule(rule);
} else if (acceptString("adaptclassstrings")) {
- parseClassFilter(configurationConsumer::addAdaptClassStringsPattern);
+ ProguardClassNameList adaptClassStringsPattern = parseOptionalClassFilter();
+ configurationConsumer.addAdaptClassStringsPattern(
+ adaptClassStringsPattern, this, optionStart);
} else if (acceptString("adaptresourcefilenames")) {
parsePathFilter(configurationConsumer::addAdaptResourceFilenames);
} else if (acceptString("adaptresourcefilecontents")) {
@@ -2093,15 +2099,11 @@
}
}
- private void parseClassFilter(Consumer<ProguardClassNameList> consumer)
- throws ProguardRuleParserException {
+ private ProguardClassNameList parseOptionalClassFilter() throws ProguardRuleParserException {
skipWhitespace();
- if (isOptionalArgumentGiven()) {
- consumer.accept(parseClassNames());
- } else {
- consumer.accept(
- ProguardClassNameList.singletonList(ProguardTypeMatcher.defaultAllMatcher()));
- }
+ return isOptionalArgumentGiven()
+ ? parseClassNames()
+ : ProguardClassNameList.singletonList(ProguardTypeMatcher.defaultAllMatcher());
}
private void parseClassNameAddToBuilder(ProguardClassNameList.Builder builder)
@@ -2153,12 +2155,7 @@
private void parsePathFilter(Consumer<ProguardPathList> consumer)
throws ProguardRuleParserException {
- skipWhitespace();
- if (isOptionalArgumentGiven()) {
- consumer.accept(parsePathFilter());
- } else {
- consumer.accept(ProguardPathList.emptyList());
- }
+ consumer.accept(parseOptionalPathFilter());
}
private ProguardPathList parsePathFilter() throws ProguardRuleParserException {
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserConsumer.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserConsumer.java
index c5ad0d6..42e5107 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserConsumer.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserConsumer.java
@@ -22,7 +22,10 @@
Position position,
TextPosition positionStart);
- void addKeepPackageNamesPattern(ProguardClassNameList proguardClassNameList);
+ void addKeepPackageNamesPattern(
+ ProguardClassNameList proguardClassNameList,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart);
void setKeepParameterNames(ProguardConfigurationSourceParser parser, Position position);
@@ -71,9 +74,15 @@
void setIgnoreWarnings(ProguardConfigurationSourceParser parser, TextPosition positionStart);
- void addDontWarnPattern(ProguardClassNameList pattern);
+ void addDontWarnPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart);
- void addDontNotePattern(ProguardClassNameList pattern);
+ void addDontNotePattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart);
void enableAllowAccessModification(
ProguardConfigurationSourceParser parser, Position position, TextPosition positionStart);
@@ -99,7 +108,10 @@
void setPackageObfuscationDictionary(
Path path, ProguardConfigurationSourceParser parser, Position position);
- void addAdaptClassStringsPattern(ProguardClassNameList pattern);
+ void addAdaptClassStringsPattern(
+ ProguardClassNameList pattern,
+ ProguardConfigurationSourceParser parser,
+ TextPosition positionStart);
void addAdaptResourceFileContents(ProguardPathList pattern);