org.codehaus.groovy.transform

## Class ASTTransformationCollectorCodeVisitor

- java.lang.Object
- - org.codehaus.groovy.ast.CodeVisitorSupport
  - - org.codehaus.groovy.ast.ClassCodeVisitorSupport
    - - org.codehaus.groovy.transform.ASTTransformationCollectorCodeVisitor

- All Implemented Interfaces:
    GroovyClassVisitor, GroovyCodeVisitor

      public class ASTTransformationCollectorCodeVisitor
      extends ClassCodeVisitorSupport

  This visitor walks the AST tree and collects references to Annotations that are annotated themselves by `GroovyASTTransformation`. Each such annotation is added.

  This visitor is only intended to be executed once, during the SEMANTIC_ANALYSIS phase of compilation.

  Author:
    Danno Ferrin (shemnon), Roshan Dawrani (roshandawrani), Jochen Theodorou (blackdrag)

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ASTTransformationCollectorCodeVisitor(SourceUnit source, GroovyClassLoader transformLoader)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected SourceUnit` | `getSourceUnit()`
    `void` | `visitAnnotations(AnnotatedNode node)` If the annotation is annotated with `GroovyASTTransformation` the annotation is added to `stageVisitors` at the appropriate processor visitor.
    `void` | `visitClass(ClassNode klassNode)` Visit a ClassNode.

    - ### Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport

      `addError, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoop`

    - ### Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport

      `visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression`

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

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

- - ### Constructor Detail

    - #### ASTTransformationCollectorCodeVisitor

          public ASTTransformationCollectorCodeVisitor(SourceUnit source,
                                                       GroovyClassLoader transformLoader)

  - ### Method Detail

    - #### getSourceUnit

          protected SourceUnit getSourceUnit()

      Specified by:
        `getSourceUnit` in class `ClassCodeVisitorSupport`

    - #### visitClass

          public void visitClass(ClassNode klassNode)

      Description copied from interface: `GroovyClassVisitor`
      Visit a ClassNode.
      Specified by:
        `visitClass` in interface `GroovyClassVisitor`
      Overrides:
        `visitClass` in class `ClassCodeVisitorSupport`

    - #### visitAnnotations

          public void visitAnnotations(AnnotatedNode node)

      If the annotation is annotated with `GroovyASTTransformation` the annotation is added to `stageVisitors` at the appropriate processor visitor.
      Overrides:
        `visitAnnotations` in class `ClassCodeVisitorSupport`
      Parameters:
        `node` - the node to process