[KeepAnno] Move annotations constants utility.

The utility for accessing the structure of annotations is needed for
tools and not by clients using the keep annotations. Moving it to the
ast package avoids shipping it as part of the annotations library.

Change-Id: Ib35f4f88a39e0dfc6f382bc54d462f4f90535814
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 7a6de42..1d33cb1 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
@@ -3,14 +3,14 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.keepanno.asm;
 
-import com.android.tools.r8.keepanno.annotations.KeepConstants;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Binding;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Condition;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Edge;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Item;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Kind;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Option;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Target;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Binding;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Condition;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Edge;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Item;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Kind;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Option;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Target;
 import com.android.tools.r8.keepanno.ast.KeepBindings;
 import com.android.tools.r8.keepanno.ast.KeepClassReference;
 import com.android.tools.r8.keepanno.ast.KeepCondition;
@@ -96,7 +96,7 @@
       if (descriptor.equals(Edge.DESCRIPTOR)) {
         return new KeepEdgeVisitor(parent, this::setContext);
       }
-      if (descriptor.equals(KeepConstants.UsesReflection.DESCRIPTOR)) {
+      if (descriptor.equals(AnnotationConstants.UsesReflection.DESCRIPTOR)) {
         KeepItemPattern classItem =
             KeepItemPattern.builder()
                 .setClassPattern(KeepQualifiedClassNamePattern.exact(className))
@@ -170,7 +170,7 @@
       if (descriptor.equals(Edge.DESCRIPTOR)) {
         return new KeepEdgeVisitor(parent, this::setContext);
       }
-      if (descriptor.equals(KeepConstants.UsesReflection.DESCRIPTOR)) {
+      if (descriptor.equals(AnnotationConstants.UsesReflection.DESCRIPTOR)) {
         return new UsesReflectionVisitor(parent, this::setContext, createItemContext());
       }
       return null;
@@ -224,7 +224,7 @@
       if (descriptor.equals(Edge.DESCRIPTOR)) {
         return new KeepEdgeVisitor(parent, this::setContext);
       }
-      if (descriptor.equals(KeepConstants.UsesReflection.DESCRIPTOR)) {
+      if (descriptor.equals(AnnotationConstants.UsesReflection.DESCRIPTOR)) {
         return new UsesReflectionVisitor(parent, this::setContext, createItemContext());
       }
       return null;
@@ -328,10 +328,10 @@
 
     @Override
     public AnnotationVisitor visitArray(String name) {
-      if (name.equals(KeepConstants.UsesReflection.value)) {
+      if (name.equals(AnnotationConstants.UsesReflection.value)) {
         return new KeepConsequencesVisitor(builder::setConsequences);
       }
-      if (name.equals(KeepConstants.UsesReflection.additionalPreconditions)) {
+      if (name.equals(AnnotationConstants.UsesReflection.additionalPreconditions)) {
         return new KeepPreconditionsVisitor(
             additionalPreconditions -> {
               additionalPreconditions.forEach(preconditions::addCondition);
@@ -360,7 +360,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(String name, String descriptor) {
-      if (descriptor.equals(KeepConstants.Binding.DESCRIPTOR)) {
+      if (descriptor.equals(AnnotationConstants.Binding.DESCRIPTOR)) {
         return new KeepBindingVisitor(builder);
       }
       return super.visitAnnotation(name, descriptor);
@@ -718,7 +718,7 @@
 
     @Override
     public void visitEnum(String name, String descriptor, String value) {
-      if (!descriptor.equals(KeepConstants.Kind.DESCRIPTOR)) {
+      if (!descriptor.equals(AnnotationConstants.Kind.DESCRIPTOR)) {
         super.visitEnum(name, descriptor, value);
       }
       switch (value) {
@@ -879,11 +879,11 @@
 
     @Override
     AnnotationVisitor parseArray(String name, Consumer<KeepOptions> setValue) {
-      if (name.equals(KeepConstants.Target.disallow)) {
+      if (name.equals(AnnotationConstants.Target.disallow)) {
         return new KeepOptionsVisitor(
             options -> setValue.accept(KeepOptions.disallowBuilder().addAll(options).build()));
       }
-      if (name.equals(KeepConstants.Target.allow)) {
+      if (name.equals(AnnotationConstants.Target.allow)) {
         return new KeepOptionsVisitor(
             options -> setValue.accept(KeepOptions.allowBuilder().addAll(options).build()));
       }
@@ -934,7 +934,7 @@
 
     @Override
     public void visitEnum(String ignore, String descriptor, String value) {
-      if (!descriptor.equals(KeepConstants.Option.DESCRIPTOR)) {
+      if (!descriptor.equals(AnnotationConstants.Option.DESCRIPTOR)) {
         super.visitEnum(ignore, descriptor, value);
       }
       KeepOption option;
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeWriter.java b/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeWriter.java
index 515becd..dc8e7c9 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeWriter.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeWriter.java
@@ -3,11 +3,11 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.keepanno.asm;
 
-import com.android.tools.r8.keepanno.annotations.KeepConstants;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Condition;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Edge;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Item;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Target;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Condition;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Edge;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Item;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Target;
 import com.android.tools.r8.keepanno.ast.KeepClassReference;
 import com.android.tools.r8.keepanno.ast.KeepConsequences;
 import com.android.tools.r8.keepanno.ast.KeepEdge;
@@ -151,7 +151,7 @@
     KeepQualifiedClassNamePattern namePattern = classReference.asClassNamePattern();
     if (namePattern.isExact()) {
       Type typeConstant = Type.getType(namePattern.getExactDescriptor());
-      itemVisitor.visit(KeepConstants.Item.classConstant, typeConstant);
+      itemVisitor.visit(AnnotationConstants.Item.classConstant, typeConstant);
     } else {
       throw new Unimplemented();
     }
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/annotations/KeepConstants.java b/src/keepanno/java/com/android/tools/r8/keepanno/ast/AnnotationConstants.java
similarity index 89%
rename from src/keepanno/java/com/android/tools/r8/keepanno/annotations/KeepConstants.java
rename to src/keepanno/java/com/android/tools/r8/keepanno/ast/AnnotationConstants.java
index f37c3fc..68cd0df 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/annotations/KeepConstants.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/ast/AnnotationConstants.java
@@ -1,16 +1,22 @@
-// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
+// Copyright (c) 2023, 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.keepanno.annotations;
+package com.android.tools.r8.keepanno.ast;
 
+import com.android.tools.r8.keepanno.annotations.KeepBinding;
+import com.android.tools.r8.keepanno.annotations.KeepCondition;
+import com.android.tools.r8.keepanno.annotations.KeepEdge;
+import com.android.tools.r8.keepanno.annotations.KeepItemKind;
+import com.android.tools.r8.keepanno.annotations.KeepOption;
+import com.android.tools.r8.keepanno.annotations.KeepTarget;
 
 /**
  * Utility class for referencing the various keep annotations and their structure.
  *
- * <p>Use of these references avoids poluting the Java namespace with imports of the java
+ * <p>Use of these references avoids polluting the Java namespace with imports of the java
  * annotations which overlap in name with the actual semantic AST types.
  */
-public final class KeepConstants {
+public final class AnnotationConstants {
 
   public static String getDescriptor(Class<?> clazz) {
     return "L" + clazz.getTypeName().replace('.', '/') + ";";
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/processor/KeepEdgeProcessor.java b/src/keepanno/java/com/android/tools/r8/keepanno/processor/KeepEdgeProcessor.java
index 80a6ec5..72b36ed 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/processor/KeepEdgeProcessor.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/processor/KeepEdgeProcessor.java
@@ -7,11 +7,11 @@
 import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
 import static org.objectweb.asm.Opcodes.ACC_SUPER;
 
-import com.android.tools.r8.keepanno.annotations.KeepConstants;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Edge;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Item;
 import com.android.tools.r8.keepanno.asm.KeepEdgeReader;
 import com.android.tools.r8.keepanno.asm.KeepEdgeWriter;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Edge;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Item;
 import com.android.tools.r8.keepanno.ast.KeepCondition;
 import com.android.tools.r8.keepanno.ast.KeepConsequences;
 import com.android.tools.r8.keepanno.ast.KeepEdge;
@@ -89,7 +89,7 @@
   }
 
   private static byte[] writeEdges(List<KeepEdge> edges, String classTypeName) {
-    String classBinaryName = KeepConstants.getBinaryNameFromClassTypeName(classTypeName);
+    String classBinaryName = AnnotationConstants.getBinaryNameFromClassTypeName(classTypeName);
     ClassWriter classWriter = new ClassWriter(0);
     classWriter.visit(
         KeepEdgeReader.ASM_VERSION,
@@ -107,7 +107,7 @@
   }
 
   private KeepEdge processKeepEdge(Element element, RoundEnvironment roundEnv) {
-    AnnotationMirror mirror = getAnnotationMirror(element, KeepConstants.Edge.CLASS);
+    AnnotationMirror mirror = getAnnotationMirror(element, AnnotationConstants.Edge.CLASS);
     if (mirror == null) {
       return null;
     }
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepEdgeAnnotationsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepEdgeAnnotationsTest.java
index f4411a6..9f02b7c 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepEdgeAnnotationsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepEdgeAnnotationsTest.java
@@ -14,11 +14,11 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.keepanno.annotations.KeepConstants;
-import com.android.tools.r8.keepanno.annotations.KeepConstants.Edge;
 import com.android.tools.r8.keepanno.asm.KeepEdgeReader;
 import com.android.tools.r8.keepanno.asm.KeepEdgeWriter;
 import com.android.tools.r8.keepanno.asm.KeepEdgeWriter.AnnotationVisitorInterface;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants;
+import com.android.tools.r8.keepanno.ast.AnnotationConstants.Edge;
 import com.android.tools.r8.keepanno.ast.KeepEdge;
 import com.android.tools.r8.keepanno.processor.KeepEdgeProcessor;
 import com.android.tools.r8.keepanno.testsource.KeepClassAndDefaultConstructorSource;
@@ -148,7 +148,7 @@
     List<byte[]> transformed = new ArrayList<>(classes.size());
     for (Class<?> clazz : classes) {
       transformed.add(
-          transformer(clazz).removeAnnotations(KeepConstants::isKeepAnnotation).transform());
+          transformer(clazz).removeAnnotations(AnnotationConstants::isKeepAnnotation).transform());
     }
     return transformed;
   }