Mark -checkdiscard rules with matching items as used
Change-Id: I8668748db00f8369feaa8f6c10afeae472ca7def
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java b/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
index 2d331d3..3dc1bc5 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
@@ -1317,7 +1317,6 @@
private void evaluateCheckDiscardRule(DexProgramClass clazz, ProguardCheckDiscardRule rule) {
if (rule.getMemberRules().isEmpty()) {
evaluateCheckDiscardClassAndAllMembersRule(clazz, rule);
- rule.markAsUsed();
} else if (clazz.hasFields() || clazz.hasMethods()) {
markMatchingFields(clazz, rule.getMemberRules(), rule, null, null);
markMatchingMethods(clazz, rule.getMemberRules(), rule, null, null);
@@ -1329,11 +1328,13 @@
DexProgramClass clazz, ProguardCheckDiscardRule rule) {
setCheckDiscarded(clazz);
clazz.forEachProgramMember(this::setCheckDiscarded);
+ rule.markAsUsed();
}
private void evaluateCheckDiscardMemberRule(
ProgramMember<?, ?> member, ProguardCheckDiscardRule rule) {
setCheckDiscarded(member);
+ rule.markAsUsed();
}
private void setCheckDiscarded(ProgramDefinition definition) {
diff --git a/src/test/java/com/android/tools/r8/checkdiscarded/CheckDiscardedTest.java b/src/test/java/com/android/tools/r8/checkdiscarded/CheckDiscardedTest.java
index da2e4cb..389d347 100644
--- a/src/test/java/com/android/tools/r8/checkdiscarded/CheckDiscardedTest.java
+++ b/src/test/java/com/android/tools/r8/checkdiscarded/CheckDiscardedTest.java
@@ -72,7 +72,7 @@
options.enableInlining = false;
}
- private String checkDiscardRule(boolean member, Class annotation) {
+ private String checkDiscardRule(boolean member, Class<?> annotation) {
if (member) {
return "-checkdiscard class * { @" + annotation.getName() + " *; }";
} else {