aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/tools/r8/shaking
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/tools/r8/shaking')
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardAccessFlags.java176
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardAlwaysInlineRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardAssumeNoSideEffectRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardAssumeValuesRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardCheckDiscardRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java25
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java10
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardKeepPackageNamesRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardKeepRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java41
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardWhyAreYouKeepingRule.java5
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ReasonPrinter.java6
-rw-r--r--src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java4
15 files changed, 234 insertions, 73 deletions
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardAccessFlags.java b/src/main/java/com/android/tools/r8/shaking/ProguardAccessFlags.java
new file mode 100644
index 000000000..749ce835c
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardAccessFlags.java
@@ -0,0 +1,176 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.shaking;
+
+import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.graph.AccessFlags;
+import com.google.common.collect.ImmutableList;
+import java.util.List;
+import java.util.function.BooleanSupplier;
+
+public class ProguardAccessFlags {
+
+ private int flags = 0;
+
+ // Ordered list of flag names. Must be consistent with getPredicates.
+ private static final List<String> NAMES = ImmutableList.of(
+ "public",
+ "private",
+ "protected",
+ "static",
+ "final",
+ "abstract",
+ "volatile",
+ "transient",
+ "synchronized",
+ "native",
+ "strictfp"
+ );
+
+ // Get ordered list of flag predicates. Must be consistent with getNames.
+ private List<BooleanSupplier> getPredicates() {
+ return ImmutableList.of(
+ this::isPublic,
+ this::isPrivate,
+ this::isProtected,
+ this::isStatic,
+ this::isFinal,
+ this::isAbstract,
+ this::isVolatile,
+ this::isTransient,
+ this::isSynchronized,
+ this::isNative,
+ this::isStrict);
+ }
+
+ private boolean containsAll(int other) {
+ return (flags & other) == flags;
+ }
+
+ private boolean containsNone(int other) {
+ return (flags & other) == 0;
+ }
+
+ public boolean containsAll(AccessFlags other) {
+ return containsAll(other.getAsCfAccessFlags());
+ }
+
+ public boolean containsNone(AccessFlags other) {
+ return containsNone(other.getAsCfAccessFlags());
+ }
+
+ public void setPublic() {
+ set(Constants.ACC_PUBLIC);
+ }
+
+ public boolean isPublic() {
+ return isSet(Constants.ACC_PUBLIC);
+ }
+
+ public void setPrivate() {
+ set(Constants.ACC_PRIVATE);
+ }
+
+ public boolean isPrivate() {
+ return isSet(Constants.ACC_PRIVATE);
+ }
+
+ public void setProtected() {
+ set(Constants.ACC_PROTECTED);
+ }
+
+ public boolean isProtected() {
+ return isSet(Constants.ACC_PROTECTED);
+ }
+
+ public void setStatic() {
+ set(Constants.ACC_STATIC);
+ }
+
+ public boolean isStatic() {
+ return isSet(Constants.ACC_STATIC);
+ }
+
+ public void setFinal() {
+ set(Constants.ACC_FINAL);
+ }
+
+ public boolean isFinal() {
+ return isSet(Constants.ACC_FINAL);
+ }
+
+ public void setAbstract() {
+ set(Constants.ACC_ABSTRACT);
+ }
+
+ public boolean isAbstract() {
+ return isSet(Constants.ACC_ABSTRACT);
+ }
+
+ public void setVolatile() {
+ set(Constants.ACC_VOLATILE);
+ }
+
+ public boolean isVolatile() {
+ return isSet(Constants.ACC_VOLATILE);
+ }
+
+ public void setTransient() {
+ set(Constants.ACC_TRANSIENT);
+ }
+
+ public boolean isTransient() {
+ return isSet(Constants.ACC_TRANSIENT);
+ }
+
+ public void setSynchronized() {
+ set(Constants.ACC_SYNCHRONIZED);
+ }
+
+ public boolean isSynchronized() {
+ return isSet(Constants.ACC_SYNCHRONIZED);
+ }
+
+ public void setNative() {
+ set(Constants.ACC_NATIVE);
+ }
+
+ public boolean isNative() {
+ return isSet(Constants.ACC_NATIVE);
+ }
+
+ public void setStrict() {
+ set(Constants.ACC_STRICT);
+ }
+
+ public boolean isStrict() {
+ return isSet(Constants.ACC_STRICT);
+ }
+
+ private boolean isSet(int flag) {
+ return (flags & flag) != 0;
+ }
+
+ private void set(int flag) {
+ flags |= flag;
+ }
+
+ @Override
+ public String toString() {
+ List<BooleanSupplier> predicates = getPredicates();
+ StringBuilder builder = new StringBuilder();
+ boolean space = false;
+ for (int i = 0; i < NAMES.size(); i++) {
+ if (predicates.get(i).getAsBoolean()) {
+ if (space) {
+ builder.append(' ');
+ } else {
+ space = true;
+ }
+ builder.append(NAMES.get(i));
+ }
+ }
+ return builder.toString();
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardAlwaysInlineRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardAlwaysInlineRule.java
index 524afd200..ab8342df6 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardAlwaysInlineRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardAlwaysInlineRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardAlwaysInlineRule extends ProguardConfigurationRule {
@@ -22,8 +21,8 @@ public class ProguardAlwaysInlineRule extends ProguardConfigurationRule {
private ProguardAlwaysInlineRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardAssumeNoSideEffectRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardAssumeNoSideEffectRule.java
index a01dd897b..736c7789b 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardAssumeNoSideEffectRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardAssumeNoSideEffectRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardAssumeNoSideEffectRule extends ProguardConfigurationRule {
@@ -21,8 +20,8 @@ public class ProguardAssumeNoSideEffectRule extends ProguardConfigurationRule {
private ProguardAssumeNoSideEffectRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardAssumeValuesRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardAssumeValuesRule.java
index 94cf7588f..97cb5c383 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardAssumeValuesRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardAssumeValuesRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardAssumeValuesRule extends ProguardConfigurationRule {
@@ -20,8 +19,8 @@ public class ProguardAssumeValuesRule extends ProguardConfigurationRule {
private ProguardAssumeValuesRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardCheckDiscardRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardCheckDiscardRule.java
index 7f69e18bc..da5bb2653 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardCheckDiscardRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardCheckDiscardRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardCheckDiscardRule extends ProguardConfigurationRule {
@@ -22,8 +21,8 @@ public class ProguardCheckDiscardRule extends ProguardConfigurationRule {
private ProguardCheckDiscardRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java b/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java
index b8006d321..8e981a73e 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.utils.StringUtils;
import java.util.Collections;
import java.util.LinkedHashSet;
@@ -15,8 +14,8 @@ public abstract class ProguardClassSpecification {
public static class Builder {
protected ProguardTypeMatcher classAnnotation;
- protected DexAccessFlags classAccessFlags = new DexAccessFlags(0);
- protected DexAccessFlags negatedClassAccessFlags = new DexAccessFlags(0);
+ protected ProguardAccessFlags classAccessFlags = new ProguardAccessFlags();
+ protected ProguardAccessFlags negatedClassAccessFlags = new ProguardAccessFlags();
protected boolean classTypeNegated = false;
protected ProguardClassType classType;
protected ProguardClassNameList classNames;
@@ -88,19 +87,19 @@ public abstract class ProguardClassSpecification {
this.classTypeNegated = classTypeNegated;
}
- public DexAccessFlags getClassAccessFlags() {
+ public ProguardAccessFlags getClassAccessFlags() {
return classAccessFlags;
}
- public void setClassAccessFlags(DexAccessFlags flags) {
+ public void setClassAccessFlags(ProguardAccessFlags flags) {
classAccessFlags = flags;
}
- public DexAccessFlags getNegatedClassAccessFlags() {
+ public ProguardAccessFlags getNegatedClassAccessFlags() {
return negatedClassAccessFlags;
}
- public void setNegatedClassAccessFlags(DexAccessFlags flags) {
+ public void setNegatedClassAccessFlags(ProguardAccessFlags flags) {
negatedClassAccessFlags = flags;
}
@@ -119,8 +118,8 @@ public abstract class ProguardClassSpecification {
}
private final ProguardTypeMatcher classAnnotation;
- private final DexAccessFlags classAccessFlags;
- private final DexAccessFlags negatedClassAccessFlags;
+ private final ProguardAccessFlags classAccessFlags;
+ private final ProguardAccessFlags negatedClassAccessFlags;
private final boolean classTypeNegated;
private final ProguardClassType classType;
private final ProguardClassNameList classNames;
@@ -131,8 +130,8 @@ public abstract class ProguardClassSpecification {
protected ProguardClassSpecification(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
@@ -184,11 +183,11 @@ public abstract class ProguardClassSpecification {
return classTypeNegated;
}
- public DexAccessFlags getClassAccessFlags() {
+ public ProguardAccessFlags getClassAccessFlags() {
return classAccessFlags;
}
- public DexAccessFlags getNegatedClassAccessFlags() {
+ public ProguardAccessFlags getNegatedClassAccessFlags() {
return negatedClassAccessFlags;
}
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index d24a3578f..7997b4425 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -6,7 +6,6 @@ package com.android.tools.r8.shaking;
import com.android.tools.r8.CompilationException;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexString;
@@ -561,9 +560,10 @@ public class ProguardConfigurationParser {
assert builder.getClassAnnotation() == null;
builder.setClassAnnotation(annotation);
} else {
- DexAccessFlags flags =
- parseNegation() ? builder.getNegatedClassAccessFlags() :
- builder.getClassAccessFlags();
+ ProguardAccessFlags flags =
+ parseNegation()
+ ? builder.getNegatedClassAccessFlags()
+ : builder.getClassAccessFlags();
skipWhitespace();
if (acceptString("public")) {
flags.setPublic();
@@ -636,7 +636,7 @@ public class ProguardConfigurationParser {
boolean found = true;
while (found && !eof()) {
found = false;
- DexAccessFlags flags =
+ ProguardAccessFlags flags =
parseNegation() ? ruleBuilder.getNegatedAccessFlags() : ruleBuilder.getAccessFlags();
skipWhitespace();
switch (peekChar()) {
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
index 1021f6744..223307cfa 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
@@ -3,15 +3,14 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.utils.StringUtils;
import java.util.Set;
public abstract class ProguardConfigurationRule extends ProguardClassSpecification {
ProguardConfigurationRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java
index 6cfd15449..e006bd444 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardIdentifierNameStringRule extends ProguardConfigurationRule {
@@ -21,8 +20,8 @@ public class ProguardIdentifierNameStringRule extends ProguardConfigurationRule
private ProguardIdentifierNameStringRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardKeepPackageNamesRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardKeepPackageNamesRule.java
index f6db32686..c4731c625 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardKeepPackageNamesRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardKeepPackageNamesRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardKeepPackageNamesRule extends ProguardConfigurationRule {
@@ -22,8 +21,8 @@ public class ProguardKeepPackageNamesRule extends ProguardConfigurationRule {
private ProguardKeepPackageNamesRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardKeepRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardKeepRule.java
index 59acd461d..7edceed23 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardKeepRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardKeepRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardKeepRule extends ProguardConfigurationRule {
@@ -36,8 +35,8 @@ public class ProguardKeepRule extends ProguardConfigurationRule {
private ProguardKeepRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
index 121641b69..5fb5cb2aa 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.shaking;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexType;
@@ -17,8 +16,8 @@ public class ProguardMemberRule {
public static class Builder {
private ProguardTypeMatcher annotation;
- private DexAccessFlags accessFlags = new DexAccessFlags(0);
- private DexAccessFlags negatedAccessFlags = new DexAccessFlags(0);
+ private ProguardAccessFlags accessFlags = new ProguardAccessFlags();
+ private ProguardAccessFlags negatedAccessFlags = new ProguardAccessFlags();
private ProguardMemberType ruleType;
private ProguardNameMatcher name;
private ProguardTypeMatcher type;
@@ -31,19 +30,19 @@ public class ProguardMemberRule {
this.annotation = annotation;
}
- public DexAccessFlags getAccessFlags() {
+ public ProguardAccessFlags getAccessFlags() {
return accessFlags;
}
- public void setAccessFlags(DexAccessFlags flags) {
+ public void setAccessFlags(ProguardAccessFlags flags) {
accessFlags = flags;
}
- public DexAccessFlags getNegatedAccessFlags() {
+ public ProguardAccessFlags getNegatedAccessFlags() {
return negatedAccessFlags;
}
- public void setNegatedAccessFlags(DexAccessFlags flags) {
+ public void setNegatedAccessFlags(ProguardAccessFlags flags) {
negatedAccessFlags = flags;
}
@@ -83,8 +82,8 @@ public class ProguardMemberRule {
}
private final ProguardTypeMatcher annotation;
- private final DexAccessFlags accessFlags;
- private final DexAccessFlags negatedAccessFlags;
+ private final ProguardAccessFlags accessFlags;
+ private final ProguardAccessFlags negatedAccessFlags;
private final ProguardMemberType ruleType;
private final ProguardNameMatcher name;
private final ProguardTypeMatcher type;
@@ -93,8 +92,8 @@ public class ProguardMemberRule {
private ProguardMemberRule(
ProguardTypeMatcher annotation,
- DexAccessFlags accessFlags,
- DexAccessFlags negatedAccessFlags,
+ ProguardAccessFlags accessFlags,
+ ProguardAccessFlags negatedAccessFlags,
ProguardMemberType ruleType,
ProguardNameMatcher name,
ProguardTypeMatcher type,
@@ -121,11 +120,11 @@ public class ProguardMemberRule {
return annotation;
}
- public DexAccessFlags getAccessFlags() {
+ public ProguardAccessFlags getAccessFlags() {
return accessFlags;
}
- public DexAccessFlags getNegatedAccessFlags() {
+ public ProguardAccessFlags getNegatedAccessFlags() {
return negatedAccessFlags;
}
@@ -162,8 +161,8 @@ public class ProguardMemberRule {
case ALL:
case ALL_FIELDS:
// Access flags check.
- if (!field.accessFlags.containsAllOf(getAccessFlags()) ||
- !field.accessFlags.containsNoneOf(getNegatedAccessFlags())) {
+ if (!getAccessFlags().containsAll(field.accessFlags)
+ || !getNegatedAccessFlags().containsNone(field.accessFlags)) {
break;
}
// Annotations check.
@@ -175,8 +174,8 @@ public class ProguardMemberRule {
break;
}
// Access flags check.
- if (!(field.accessFlags.containsAllOf(getAccessFlags()) &&
- field.accessFlags.containsNoneOf(getNegatedAccessFlags()))) {
+ if (!getAccessFlags().containsAll(field.accessFlags)
+ || !getNegatedAccessFlags().containsNone(field.accessFlags)) {
break;
}
// Type check.
@@ -206,8 +205,8 @@ public class ProguardMemberRule {
// Fall through for all other methods.
case ALL:
// Access flags check.
- if (!method.accessFlags.containsAllOf(getAccessFlags()) ||
- !method.accessFlags.containsNoneOf(getNegatedAccessFlags())) {
+ if (!getAccessFlags().containsAll(method.accessFlags)
+ || !getNegatedAccessFlags().containsNone(method.accessFlags)) {
break;
}
// Annotations check.
@@ -226,8 +225,8 @@ public class ProguardMemberRule {
break;
}
// Access flags check.
- if (!(method.accessFlags.containsAllOf(getAccessFlags()) &&
- method.accessFlags.containsNoneOf(getNegatedAccessFlags()))) {
+ if (!getAccessFlags().containsAll(method.accessFlags)
+ || !getNegatedAccessFlags().containsNone(method.accessFlags)) {
break;
}
// Annotations check.
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardWhyAreYouKeepingRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardWhyAreYouKeepingRule.java
index e029b77fe..ef839265d 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardWhyAreYouKeepingRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardWhyAreYouKeepingRule.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexAccessFlags;
import java.util.Set;
public class ProguardWhyAreYouKeepingRule extends ProguardConfigurationRule {
@@ -22,8 +21,8 @@ public class ProguardWhyAreYouKeepingRule extends ProguardConfigurationRule {
private ProguardWhyAreYouKeepingRule(
ProguardTypeMatcher classAnnotation,
- DexAccessFlags classAccessFlags,
- DexAccessFlags negatedClassAccessFlags,
+ ProguardAccessFlags classAccessFlags,
+ ProguardAccessFlags negatedClassAccessFlags,
boolean classTypeNegated,
ProguardClassType classType,
ProguardClassNameList classNames,
diff --git a/src/main/java/com/android/tools/r8/shaking/ReasonPrinter.java b/src/main/java/com/android/tools/r8/shaking/ReasonPrinter.java
index 47893e563..604cf5109 100644
--- a/src/main/java/com/android/tools/r8/shaking/ReasonPrinter.java
+++ b/src/main/java/com/android/tools/r8/shaking/ReasonPrinter.java
@@ -112,11 +112,7 @@ public class ReasonPrinter {
private void printReasonFor(DexEncodedField item) {
KeepReason reason = liveFields.get(item);
if (reason == null) {
- if (item.accessFlags.isAbstract()) {
- printOnlyAbstractShell(item, formatter);
- } else {
- printNoIdeaWhy(item.field, formatter);
- }
+ printNoIdeaWhy(item.field, formatter);
} else {
formatter.startItem(item.field);
formatter.pushIsLivePrefix();
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index 177493adc..bb8c08a08 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -117,10 +117,10 @@ public class RootSetBuilder {
// Process a class with the keep rule.
private void process(DexClass clazz, ProguardConfigurationRule rule) {
- if (!clazz.accessFlags.containsAllOf(rule.getClassAccessFlags())) {
+ if (!rule.getClassAccessFlags().containsAll(clazz.accessFlags)) {
return;
}
- if (!clazz.accessFlags.containsNoneOf(rule.getNegatedClassAccessFlags())) {
+ if (!rule.getNegatedClassAccessFlags().containsNone(clazz.accessFlags)) {
return;
}
if (!containsAnnotation(rule.getClassAnnotation(), clazz.annotations)) {