Package: org.codehaus.groovy.transform.trait

## [Java] Class TraitASTTransformation

- org.codehaus.groovy.transform.trait.TraitASTTransformation

- All Implemented Interfaces and Traits:
    CompilationUnitAware

      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

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static String` | `DO_DYNAMIC` | Metadata key that marks trait-generated calls requiring dynamic dispatch.
    `static String` | `POST_TYPECHECKING_REPLACEMENT` | Metadata key that stores an expression replacement to apply after type checking.

  - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class AbstractASTTransformation` | `RETENTION_CLASSNODE, sourceUnit`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `setCompilationUnit(CompilationUnit unit)` Stores the compilation unit so generated helper classes can register follow-up transformations.
    `` | `public void` | `visit(ASTNode[] nodes, SourceUnit source)` Rewrites a trait declaration into the interface and helper classes used during compilation.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class 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 Detail

    - #### public static final String DO_DYNAMIC

      Metadata key that marks trait-generated calls requiring dynamic dispatch.

    - #### public static final String POST_TYPECHECKING_REPLACEMENT

      Metadata key that stores an expression replacement to apply after type checking.

  - ### Method Detail

    - #### public void setCompilationUnit(CompilationUnit unit)

      Stores the compilation unit so generated helper classes can register follow-up transformations.

      Parameters:
        `unit` - the active compilation unit

    - #### public void visit(ASTNode[] nodes, SourceUnit source)

      Rewrites a trait declaration into the interface and helper classes used during compilation.

      Parameters:
        `nodes` - the annotation and annotated nodes participating in the transformation
        `source` - the source unit being transformed