Merge "Relax keep rule type for members with reflective uses."
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
index a88041e..b8b7780 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
@@ -36,7 +36,7 @@
   public static ProguardKeepRule buildFieldKeepRule(DexClass clazz, DexEncodedField field) {
     assert clazz.type == field.field.getHolder();
     ProguardKeepRule.Builder builder = ProguardKeepRule.builder();
-    builder.setType(ProguardKeepRuleType.KEEP);
+    builder.setType(ProguardKeepRuleType.KEEP_CLASS_MEMBERS);
     builder.getModifiersBuilder().setAllowsObfuscation(true);
     builder.getModifiersBuilder().setAllowsOptimization(true);
     builder.getClassAccessFlags().setPublic();
@@ -59,7 +59,7 @@
   public static ProguardKeepRule buildMethodKeepRule(DexClass clazz, DexEncodedMethod method) {
     assert clazz.type == method.method.getHolder();
     ProguardKeepRule.Builder builder = ProguardKeepRule.builder();
-    builder.setType(ProguardKeepRuleType.KEEP);
+    builder.setType(ProguardKeepRuleType.KEEP_CLASS_MEMBERS);
     builder.getModifiersBuilder().setAllowsObfuscation(true);
     builder.getModifiersBuilder().setAllowsOptimization(true);
     builder.getClassAccessFlags().setPublic();
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
index 5886829..4681d7d 100644
--- a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
@@ -25,6 +25,7 @@
 import com.android.tools.r8.shaking.ProguardConfigurationRule;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
 import com.android.tools.r8.shaking.ProguardKeepRule;
+import com.android.tools.r8.shaking.ProguardKeepRuleType;
 import com.android.tools.r8.shaking.ProguardMemberRule;
 import com.android.tools.r8.shaking.ProguardMemberType;
 import com.android.tools.r8.shaking.forceproguardcompatibility.defaultmethods.ClassImplementingInterface;
@@ -274,6 +275,7 @@
       configuration.getRules().forEach(rule -> {
         assertTrue(rule instanceof ProguardKeepRule);
         ProguardKeepRule keepRule = (ProguardKeepRule) rule;
+        assertEquals(ProguardKeepRuleType.KEEP, keepRule.getType());
         assertTrue(keepRule.getModifiers().allowsObfuscation);
         assertTrue(keepRule.getModifiers().allowsOptimization);
         Set<ProguardMemberRule> memberRules = rule.getMemberRules();
@@ -372,6 +374,7 @@
       configuration.getRules().forEach(rule -> {
         assertTrue(rule instanceof ProguardKeepRule);
         ProguardKeepRule keepRule = (ProguardKeepRule) rule;
+        assertEquals(ProguardKeepRuleType.KEEP_CLASS_MEMBERS, keepRule.getType());
         assertTrue(keepRule.getModifiers().allowsObfuscation);
         assertTrue(keepRule.getModifiers().allowsOptimization);
         Set<ProguardMemberRule> memberRules = rule.getMemberRules();
@@ -477,6 +480,7 @@
       configuration.getRules().forEach(rule -> {
         assertTrue(rule instanceof ProguardKeepRule);
         ProguardKeepRule keepRule = (ProguardKeepRule) rule;
+        assertEquals(ProguardKeepRuleType.KEEP_CLASS_MEMBERS, keepRule.getType());
         assertTrue(keepRule.getModifiers().allowsObfuscation);
         assertTrue(keepRule.getModifiers().allowsOptimization);
         Set<ProguardMemberRule> memberRules = rule.getMemberRules();