org.codehaus.groovy.classgen

## Class AnnotationVisitor

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

    public class AnnotationVisitor
    extends Object

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

Author:
  Alex Popescu

### Constructor Summary

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

### Method Summary

Methods
`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)