Package: org.codehaus.groovy.transform

## [Groovy] Class ConditionalInterruptibleASTTransformation

- org.codehaus.groovy.transform.ConditionalInterruptibleASTTransformation

-     @CompileStatic
      @GroovyASTTransformation(phase=CompilePhase.CANONICALIZATION)
      class ConditionalInterruptibleASTTransformation
      extends AbstractInterruptibleASTTransformation

  Allows "interrupt-safe" executions of scripts by adding a custom conditional check on loops (for, while, do) and first statement of closures. By default, also adds an interrupt check statement on the beginning of method calls.

  See Also:
    ConditionalInterrupt
  Since:
    1.8.0

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class AbstractInterruptibleASTTransformation` | `CHECK_METHOD_START_MEMBER, THROWN_EXCEPTION_TYPE, applyToAllClasses, applyToAllMembers, checkOnMethodStart, source, thrownExceptionType`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `ConditionalInterruptibleASTTransformation()`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `protected Expression` | `createCondition()` Builds the expression that calls the generated condition method.
    `` | `protected String` | `getErrorMessage()` Returns the message used when the interrupt condition evaluates to `true`.
    `` | `protected void` | `setupTransform(AnnotationNode node)` Initializes the transformation state from the annotation node.
    `` | `protected ClassNode` | `type()` Returns the annotation type handled by this transformation.
    `` | `void` | `visitAnnotations(AnnotatedNode node)` Skips annotation visitation to avoid re-entering the transformation.
    `` | `void` | `visitClass(ClassNode type)` Adds the synthetic condition method and visits eligible class members.
    `` | `void` | `visitClosureExpression(ClosureExpression closureExpr)` Wraps closure bodies with the interrupt check, excluding the annotation closure itself.
    `` | `void` | `visitField(FieldNode node)` Visits eligible instance fields.
    `` | `void` | `visitMethod(MethodNode node)` Wraps eligible methods with the interrupt check while preserving script bootstrap behavior.
    `` | `void` | `visitProperty(PropertyNode node)` Visits eligible instance properties.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class AbstractInterruptibleASTTransformation` | `createCondition, createInterruptStatement, getBooleanAnnotationParameter, getClassAnnotationParameter, getErrorMessage, getSourceUnit, internalError, setupTransform, type, visit, visitDoWhileLoop, visitForLoop, visitWhileLoop, wrapBlock`
    `class ClassCodeVisitorSupport` | `addError, getSourceUnit, visitAnnotation, visitAnnotations, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClass, visitClassCodeContainer, visitClosureExpression, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitStatementAnnotations, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoop`
    `class CodeVisitorSupport` | `afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCastExpression, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitEmptyStatement, visitExpressionStatement, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitReturnStatement, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitSwitch, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop`

- - ### Constructor Detail

    - #### ConditionalInterruptibleASTTransformation()

  - ### Method Detail

    - #### protected Expression createCondition()

      Builds the expression that calls the generated condition method.

      Returns:
        the interrupt condition expression

    - #### protected String getErrorMessage()

      Returns the message used when the interrupt condition evaluates to `true`.

      Returns:
        the failure message

    - #### protected void setupTransform(AnnotationNode node)

      Initializes the transformation state from the annotation node.

      Parameters:
        `node` - the transformation annotation

    - #### protected ClassNode type()

      Returns the annotation type handled by this transformation.

      Returns:
        the handled annotation type

    - #### @Override
      void visitAnnotations(AnnotatedNode node)

      Skips annotation visitation to avoid re-entering the transformation.

      Parameters:
        `node` - the annotated node, ignored by this transformation

    - #### void visitClass(ClassNode type)

      Adds the synthetic condition method and visits eligible class members.

      Parameters:
        `type` - the class being transformed

    - #### @Override
      void visitClosureExpression(ClosureExpression closureExpr)

      Wraps closure bodies with the interrupt check, excluding the annotation closure itself.

      Parameters:
        `closureExpr` - the closure being visited

    - #### @Override
      void visitField(FieldNode node)

      Visits eligible instance fields.

      Parameters:
        `node` - the field being visited

    - #### @Override
      void visitMethod(MethodNode node)

      Wraps eligible methods with the interrupt check while preserving script bootstrap behavior.

      Parameters:
        `node` - the method being visited

    - #### @Override
      void visitProperty(PropertyNode node)

      Visits eligible instance properties.

      Parameters:
        `node` - the property being visited