Class ASTTransformationVisitor

java.lang.Object
All Implemented Interfaces:
GroovyClassVisitor, GroovyCodeVisitor, ErrorCollecting

public final class ASTTransformationVisitor
extends ClassCodeVisitorSupport
This class handles the invocation of the ASTAnnotationTransformation when it is encountered by a tree walk. One instance of each exists for each phase of the compilation it applies to. Before invocation the

ASTTransformationCollectorCodeVisitor will add a list of annotations that this visitor should be concerned about. All other annotations are ignored, whether or not they are GroovyASTTransformation annotated or not.

A Two-pass method is used. First all candidate annotations are added to a list then the transformations are called on those collected annotations. This is done to avoid concurrent modification exceptions during the AST tree walk and allows the transformations to alter any portion of the AST tree. Hence annotations that are added in this phase will not be processed as transformations. They will only be handled in later phases (and then only if the type was in the AST prior to any AST transformations being run against it).