org.codehaus.groovy.transform
Class ASTTransformationCollectorCodeVisitor

java.lang.Object
  extended by org.codehaus.groovy.ast.CodeVisitorSupport
      extended by org.codehaus.groovy.ast.ClassCodeVisitorSupport
          extended by 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)

Field Summary
private  ClassNode classNode
           
private  SourceUnit source
           
private  GroovyClassLoader transformLoader
           
 
Constructor Summary
ASTTransformationCollectorCodeVisitor(SourceUnit source, GroovyClassLoader transformLoader)
           
 
Method Summary
protected  SourceUnit getSourceUnit()
           
private static java.lang.annotation.Annotation getTransformClassAnnotation(ClassNode annotatedType)
           
private  java.lang.String[] getTransformClasses(java.lang.annotation.Annotation transformClassAnnotation)
           
 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)
           
 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitMethod, 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, visitDeclarationExpression, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitRegexExpression, 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
 

Field Detail

source

private SourceUnit source

classNode

private ClassNode classNode

transformLoader

private GroovyClassLoader transformLoader
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)
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

getTransformClassAnnotation

private static java.lang.annotation.Annotation getTransformClassAnnotation(ClassNode annotatedType)

getTransformClasses

private java.lang.String[] getTransformClasses(java.lang.annotation.Annotation transformClassAnnotation)


Copyright © ${year} The Codehaus. All Rights Reserved.