groovy.transform

## Annotation Type ASTTest

-     @Documented
      @Retention(value=RUNTIME)
      @Target(value={TYPE,METHOD,ANNOTATION_TYPE,CONSTRUCTOR,FIELD,LOCAL_VARIABLE,PACKAGE,PARAMETER})
      public @interface ASTTest

  This AST transformation aims at helping in debugging other AST transformations. It provides a basic infrastructure for performing tests on AST nodes. You can place this annotation on any node which accepts an annotation (types, methods, annotations, constructors, fields, local variables, packages or parameters), then use a script which is run against this AST node at a specific phase. For example, you could test the `Field` AST transformation this way:

       import groovy.transform.*

       @ASTTest(value = {
          def owner = node.declaringClass
          assert owner.fields.any { it.name == 'x' }
        })
       @Field int x

  The closure code is executed after the specified phase has completed. If no phase is selected, then the code is executed after the `semantic analysis` phase. The `node` variable refers to the AST node where the AST test annotation is put. In the previous example, it means that node refers to the declaration node (int x).
  Since:
    2.0.0
  Author:
    Cedric Champeau

- - ### Required Element Summary

    Required Elements
    Modifier and Type | Required Element and Description
    --- | ---
    `Class` | `value` A closure which is executed against the annotated node after the specified phase has completed.

  - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `CompilePhase` | `phase` The compile phase after which the test code should run.

- - ### Element Detail

    - #### value

          public abstract Class value

      A closure which is executed against the annotated node after the specified phase has completed.

    - #### phase

          public abstract CompilePhase phase

      The compile phase after which the test code should run.
      Default:
        org.codehaus.groovy.control.CompilePhase.SEMANTIC_ANALYSIS