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 {