Class TraitASTTransformation
java.lang.Object
org.codehaus.groovy.transform.AbstractASTTransformation
org.codehaus.groovy.transform.trait.TraitASTTransformation
- All Implemented Interfaces:
CompilationUnitAware,ASTTransformation,ErrorCollecting
public class TraitASTTransformation
extends AbstractASTTransformation
implements CompilationUnitAware
Handles generation of code for the traits (trait keyword is equivalent to using the @Trait annotation).
A class annotated with @Trait will generate, instead:
- an interface with the same name
- a utility inner class that will be used by the compiler to implement the trait
- potentially a utility inner class to assist with implementing trait fields
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringMetadata key that marks trait-generated calls requiring dynamic dispatch.static final StringMetadata key that stores an expression replacement to apply after type checking.Fields inherited from class org.codehaus.groovy.transform.AbstractASTTransformation
RETENTION_CLASSNODE, sourceUnit -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidStores the compilation unit so generated helper classes can register follow-up transformations.voidvisit(ASTNode[] nodes, SourceUnit source) Rewrites a trait declaration into the interface and helper classes used during compilation.Methods inherited from class org.codehaus.groovy.transform.AbstractASTTransformation
addError, checkIncludeExcludeUndefinedAware, checkIncludeExcludeUndefinedAware, checkNotInterface, checkPropertyList, checkPropertyList, checkPropertyList, copyAnnotatedNodeAnnotations, copyAnnotatedNodeAnnotations, deemedInternal, deemedInternalName, getAnnotationName, getMemberClassList, getMemberClassValue, getMemberClassValue, getMemberIntValue, getMemberStringList, getMemberStringValue, getMemberStringValue, getMemberValue, hasAnnotation, init, markAsInternal, memberHasValue, shouldSkip, shouldSkip, shouldSkip, shouldSkipOnDescriptorUndefinedAware, shouldSkipUndefinedAware, shouldSkipUndefinedAware, shouldSkipUndefinedAware, tokenize
-
Field Details
-
DO_DYNAMIC
Metadata key that marks trait-generated calls requiring dynamic dispatch. -
POST_TYPECHECKING_REPLACEMENT
Metadata key that stores an expression replacement to apply after type checking.
-
-
Constructor Details
-
TraitASTTransformation
public TraitASTTransformation()
-
-
Method Details
-
setCompilationUnit
Stores the compilation unit so generated helper classes can register follow-up transformations.- Specified by:
setCompilationUnitin interfaceCompilationUnitAware- Parameters:
unit- the active compilation unit
-
visit
Rewrites a trait declaration into the interface and helper classes used during compilation.- Specified by:
visitin interfaceASTTransformation- Parameters:
nodes- the annotation and annotated nodes participating in the transformationsource- the source unit being transformed
-