org.codehaus.groovy.classgen

## Class AnnotationVisitor

- java.lang.Object
- - org.codehaus.groovy.classgen.AnnotationVisitor

-     public class AnnotationVisitor
      extends Object

  An Annotation visitor responsible for:
  - reading annotation metadata (@Retention, @Target, attribute types)
  - verify that an `AnnotationNode` conforms to annotation meta
  - enhancing an `AnnotationNode` AST to reflect real annotation meta

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AnnotationVisitor(SourceUnit source, ErrorCollector errorCollector)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addError(String msg)`
    `protected void` | `addError(String msg, ASTNode expr)`
    `void` | `checkCircularReference(ClassNode searchClass, ClassNode attrType, Expression startExp)`
    `void` | `checkReturnType(ClassNode attrType, ASTNode node)`
    `void` | `setReportClass(ClassNode cn)`
    `AnnotationNode` | `visit(AnnotationNode node)`
    `protected void` | `visitAnnotationExpression(String attrName, AnnotationConstantExpression expression, ClassNode attrType)`
    `protected void` | `visitConstantExpression(String attrName, ConstantExpression constExpr, ClassNode attrType)`
    `protected void` | `visitEnumExpression(String attrName, PropertyExpression propExpr, ClassNode attrType)`
    `protected void` | `visitExpression(String attrName, Expression attrExp, ClassNode attrType)`
    `protected void` | `visitListExpression(String attrName, ListExpression listExpr, ClassNode elementType)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AnnotationVisitor

          public AnnotationVisitor(SourceUnit source,
                                   ErrorCollector errorCollector)

  - ### Method Detail

    - #### setReportClass

          public void setReportClass(ClassNode cn)

    - #### visit

          public AnnotationNode visit(AnnotationNode node)

    - #### visitExpression

          protected void visitExpression(String attrName,
                                         Expression attrExp,
                                         ClassNode attrType)

    - #### checkReturnType

          public void checkReturnType(ClassNode attrType,
                                      ASTNode node)

    - #### visitAnnotationExpression

          protected void visitAnnotationExpression(String attrName,
                                                   AnnotationConstantExpression expression,
                                                   ClassNode attrType)

      Parameters:
        `attrName` - the name
        `expression` - the expression
        `attrType` - the type

    - #### visitListExpression

          protected void visitListExpression(String attrName,
                                             ListExpression listExpr,
                                             ClassNode elementType)

    - #### visitConstantExpression

          protected void visitConstantExpression(String attrName,
                                                 ConstantExpression constExpr,
                                                 ClassNode attrType)

    - #### visitEnumExpression

          protected void visitEnumExpression(String attrName,
                                             PropertyExpression propExpr,
                                             ClassNode attrType)

    - #### addError

          protected void addError(String msg)

    - #### addError

          protected void addError(String msg,
                                  ASTNode expr)

    - #### checkCircularReference

          public void checkCircularReference(ClassNode searchClass,
                                             ClassNode attrType,
                                             Expression startExp)