Top Description Fields Constructors Methods
org.codehaus.groovy.transform

public Class ASTTransformationCollectorCodeVisitor

extends ClassCodeVisitorSupport
Class Inheritance
Imports
groovy.lang.GroovyClassLoader, groovy.transform.AnnotationCollector, .AnnotationCollectorMode, org.codehaus.groovy.ast.AnnotatedNode, .AnnotationNode, .ClassCodeVisitorSupport, .ClassNode, org.codehaus.groovy.ast.expr.Expression, org.codehaus.groovy.control.CompilePhase, .SourceUnit, org.codehaus.groovy.control.messages.ExceptionMessage, .SimpleMessage, org.codehaus.groovy.transform.trait.TraitASTTransformation, .Traits, java.lang.annotation.Annotation, java.lang.reflect.Method, java.util.ArrayList, .Collections, .Iterator, .LinkedHashMap, .List, .Map, .Objects, .Optional, java.util.stream.Stream

Walks the AST 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 CompilePhase#SEMANTIC_ANALYSIS phase of compilation.

Field Summary

Modifier and TypeField and Description
private ClassNode
private final SourceUnit
private final GroovyClassLoader

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private void
addTransformsToClassNode(final AnnotationNode annotation)

Determines if given annotation specifies an AST transformation and if so, adds it to the current class.

private static void
deleteExisting(final boolean mergeParams, final Map<Integer, List<AnnotationNode>> existing, final List<AnnotationNode> replacements)

private static void
deleteReplacement(final boolean mergeParams, final Map<Integer, List<AnnotationNode>> existing, final List<AnnotationNode> replacements)

private void
findCollectedAnnotations(final AnnotationNode alias, final AnnotatedNode origin, final Integer index, final Map<Integer, AnnotationCollectorMode> modes, final Map<Integer, List<AnnotationNode>> existing, final Map<Integer, List<AnnotationNode>> replacements)

protected SourceUnit
private static Annotation
getTransformClassAnnotation(final ClassNode annotationType)

private Class<?>
loadTransformClass(final String transformClass, final AnnotationNode annotation)

private static void
private static void
private void
verifyAndAddTransform(final AnnotationNode annotation, final Class<?> transformClass)

public void
public void
Inherited from org.codehaus.groovy.ast.ClassCodeVisitorSupport:
addErrorvisitAnnotationvisitAssertStatementvisitBlockStatementvisitBreakStatementvisitCaseStatementvisitCatchStatementvisitClassCodeContainervisitConstructorvisitConstructorOrMethodvisitContinueStatementvisitDeclarationExpressionvisitDoWhileLoopvisitExpressionStatementvisitFieldvisitForLoopvisitIfElsevisitImportsvisitMethodvisitObjectInitializerStatementsvisitPackagevisitPropertyvisitReturnStatementvisitStatementvisitSwitchvisitSynchronizedStatementvisitThrowStatementvisitTryCatchFinallyvisitWhileLoop

Field Detail

classNodeback to summary
private ClassNode classNode
sourceback to summary
private final SourceUnit source
transformLoaderback to summary
private final GroovyClassLoader transformLoader

Constructor Detail

ASTTransformationCollectorCodeVisitorback to summary
public ASTTransformationCollectorCodeVisitor(final SourceUnit source, final GroovyClassLoader transformLoader)

Method Detail

addTransformsToClassNodeback to summary
private void addTransformsToClassNode(final AnnotationNode annotation)

Determines if given annotation specifies an AST transformation and if so, adds it to the current class.

deleteExistingback to summary
private static void deleteExisting(final boolean mergeParams, final Map<Integer, List<AnnotationNode>> existing, final List<AnnotationNode> replacements)
deleteReplacementback to summary
private static void deleteReplacement(final boolean mergeParams, final Map<Integer, List<AnnotationNode>> existing, final List<AnnotationNode> replacements)
findCollectedAnnotationsback to summary
private void findCollectedAnnotations(final AnnotationNode alias, final AnnotatedNode origin, final Integer index, final Map<Integer, AnnotationCollectorMode> modes, final Map<Integer, List<AnnotationNode>> existing, final Map<Integer, List<AnnotationNode>> replacements)
getSourceUnitback to summary
protected SourceUnit getSourceUnit()

Implements abstract org.codehaus.groovy.ast.ClassCodeVisitorSupport.getSourceUnit.

Annotations
@Override
getTransformClassAnnotationback to summary
private static Annotation getTransformClassAnnotation(final ClassNode annotationType)
loadTransformClassback to summary
private Class<?> loadTransformClass(final String transformClass, final AnnotationNode annotation)
mergeCollectedAnnotationsback to summary
private static void mergeCollectedAnnotations(final AnnotationCollectorMode mode, final Map<Integer, List<AnnotationNode>> existing, final List<AnnotationNode> replacements)
mergeParametersback to summary
private static void mergeParameters(final AnnotationNode to, final AnnotationNode from)
verifyAndAddTransformback to summary
private void verifyAndAddTransform(final AnnotationNode annotation, final Class<?> transformClass)
Annotations
@SuppressWarnings:unchecked
visitAnnotationsback to summary
public void visitAnnotations(final AnnotatedNode node)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitAnnotations.

Annotations
@Override
visitClassback to summary
public void visitClass(final ClassNode classNode)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass.

Implements org.codehaus.groovy.ast.GroovyClassVisitor.visitClass.

Doc from org.codehaus.groovy.ast.GroovyClassVisitor.visitClass.

Visit a ClassNode.

Annotations
@Override