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