Revert "[KeepAnno] Support native instance-of patterns"
Revert submission 89581
Reason for revert: Broke build, threading module when missing.
Reverted changes: /q/submissionid:89581
Change-Id: I8b19f87d4b0fd713500baa0b161139f9e91fc20c
diff --git a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
index 13b1b4f..0d7e1b2 100644
--- a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
+++ b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
@@ -249,7 +249,7 @@
// No valid match, so the rule is discarded. This should likely be a diagnostics info.
return;
}
- if (!predicates.matchesClass(clazz, classPattern, appInfo)) {
+ if (!predicates.matchesClass(clazz, classPattern)) {
// Invalid match for this class.
return;
}
@@ -257,7 +257,7 @@
} else {
// TODO(b/323816623): This repeated iteration on all classes must be avoided.
for (DexProgramClass clazz : appInfo.classes()) {
- if (predicates.matchesClass(clazz, classPattern, appInfo)) {
+ if (predicates.matchesClass(clazz, classPattern)) {
continueWithClass(classIndex, clazz);
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java
index 05cd43c..364a17f 100644
--- a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java
+++ b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.graph.AccessFlags;
-import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexEncodedField;
@@ -39,7 +38,6 @@
import com.android.tools.r8.keepanno.ast.KeepUnqualfiedClassNamePattern;
import com.android.tools.r8.keepanno.ast.ModifierPattern;
import com.android.tools.r8.keepanno.ast.OptionalPattern;
-import com.android.tools.r8.utils.TraversalContinuation;
import java.util.List;
public class KeepAnnotationMatcherPredicates {
@@ -50,11 +48,10 @@
this.factory = factory;
}
- public boolean matchesClass(
- DexProgramClass clazz, KeepClassItemPattern classPattern, AppInfoWithClassHierarchy appInfo) {
+ public boolean matchesClass(DexProgramClass clazz, KeepClassItemPattern classPattern) {
return matchesClassName(clazz.getType(), classPattern.getClassNamePattern())
- && matchesAnnotatedBy(clazz.annotations(), classPattern.getAnnotatedByPattern())
- && matchesInstanceOfPattern(clazz, classPattern.getInstanceOfPattern(), appInfo);
+ && matchesInstanceOfPattern(clazz, classPattern.getInstanceOfPattern())
+ && matchesAnnotatedBy(clazz.annotations(), classPattern.getAnnotatedByPattern());
}
public boolean matchesClassName(DexType type, KeepQualifiedClassNamePattern pattern) {
@@ -86,25 +83,11 @@
}
private boolean matchesInstanceOfPattern(
- DexProgramClass clazz, KeepInstanceOfPattern pattern, AppInfoWithClassHierarchy appInfo) {
+ DexProgramClass unusedClazz, KeepInstanceOfPattern pattern) {
if (pattern.isAny()) {
return true;
}
- if (pattern.isInclusive()) {
- if (matchesClassName(clazz.getType(), pattern.getClassNamePattern())) {
- return true;
- }
- }
- return appInfo
- .traverseSuperTypes(
- clazz,
- (superType, unusedSubClass, unusedIsInterface) -> {
- if (matchesClassName(superType, pattern.getClassNamePattern())) {
- return TraversalContinuation.doBreak();
- }
- return TraversalContinuation.doContinue();
- })
- .isBreak();
+ throw new Unimplemented();
}
public boolean matchesGeneralMember(DexEncodedMember<?, ?> member, KeepMemberPattern pattern) {
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepInclusiveInstanceOfTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepInclusiveInstanceOfTest.java
index 6643f76..85809df 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepInclusiveInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepInclusiveInstanceOfTest.java
@@ -30,7 +30,6 @@
@Test
public void test() throws Exception {
testForKeepAnno(parameters)
- .enableNativeInterpretation()
.addProgramClasses(getInputClasses())
.addKeepMainRule(TestClass.class)
.setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepNameAndInstanceOfTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepNameAndInstanceOfTest.java
index 27b12cf..b36cca3 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepNameAndInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepNameAndInstanceOfTest.java
@@ -31,7 +31,6 @@
@Test
public void test() throws Exception {
testForKeepAnno(parameters)
- .enableNativeInterpretation()
.addProgramClasses(getInputClasses())
.addKeepMainRule(TestClass.class)
.setExcludedOuterClass(getClass())