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();
