[keepanno] Don't call visit in constructors for annotation visitor
BUG=b/463772338
Change-Id: I8f54d56ebd6344eb040b54741b638f6ce5bd9b8c
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java b/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java
index 6a45349..edb9cb4 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java
@@ -994,9 +994,9 @@
this.parent = parent;
addContext.accept(metaInfoBuilder);
// The class context/holder is the annotated class.
- visit(Item.className, className);
+ classDeclaration.tryParse(Item.className, className);
// The default kind is to target the class and its members.
- visitEnum(null, Kind.getDescriptor(), Kind.CLASS_AND_MEMBERS);
+ setKind(ItemKind.CLASS_AND_MEMBERS);
}
@Override
@@ -1252,7 +1252,7 @@
addContext.accept(metaInfoBuilder);
constraintsParser = new ConstraintDeclarationParser(parsingContext);
// The class context/holder is the annotated class.
- visit(Item.className, className);
+ classDeclaration.tryParse(Item.className, className);
}
@Override
@@ -2752,7 +2752,7 @@
private final ParsingContext parsingContext;
private String memberBindingReference = null;
private ItemKind kind = null;
- private final ClassDeclarationParser classDeclaration;
+ protected final ClassDeclarationParser classDeclaration;
private final MemberDeclarationParser memberDeclaration;
public abstract UserBindingsHelper getBindingsHelper();
@@ -2792,6 +2792,11 @@
return kind;
}
+ void setKind(ItemKind kind) {
+ assert kind != null;
+ this.kind = kind;
+ }
+
public boolean isDefaultMemberDeclaration() {
return memberDeclaration.isDefault();
}
@@ -2803,9 +2808,7 @@
}
ItemKind kind = ItemKind.fromString(value);
if (kind != null) {
- this.kind = kind;
- } else {
- super.visitEnum(name, descriptor, value);
+ setKind(kind);
}
}