Class ClosureExpression

All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>, NodeMetaDataHandler
Direct Known Subclasses:
LambdaExpression

public class ClosureExpression extends Expression
Represents a closure expression such as { statement } or { i -> statement } or { i, x, String y -> statement }. A closure is an anonymous function that can capture local variables from its enclosing scope (closure variables). Closures support zero or more parameters, with optional type annotations, and are executed in their own variable scope.
See Also:
  • Constructor Details

    • ClosureExpression

      public ClosureExpression(Parameter[] parameters, Statement code)
      Creates a closure expression with the specified parameters and code body.
      Parameters:
      parameters - an array of Parameter definitions for this closure, or null if the closure has no explicit parameters (allowing implicit it parameter); may be empty for a closure with no parameters
      code - the Statement representing the body of the closure; must not be null
  • Method Details

    • getCode

      public Statement getCode()
      Returns the code statement that represents the body of this closure. This method can be used to inspect or analyze what actions the closure will perform.
      Returns:
      the code Statement representing the closure body; may be null
    • setCode

      public void setCode(Statement code)
      Sets the code statement for this closure body. This method can be used to modify or add additional actions during closure execution, typically during AST transformations.
      Parameters:
      code - the new Statement representing the closure body; must not be null
    • getParameters

      public Parameter[] getParameters()
      Returns the parameter definitions for this closure.
      Returns:
      an array of Parameter definitions, empty if no explicit parameters are provided (allowing implicit it parameter), or null if the closure has no parameters at all
    • isParameterSpecified

      public boolean isParameterSpecified()
      Indicates whether one or more explicit parameters are specified for this closure.
      Returns:
      true if explicit parameters are present; false if no explicit parameters are specified (in which case an implicit 'it' parameter may be available)
    • getVariableScope

      public VariableScope getVariableScope()
      Returns the variable scope associated with this closure. The variable scope tracks accessible variables within the closure's execution context, including captured variables.
      Returns:
      the VariableScope for this closure; may be null if not yet initialized
    • setVariableScope

      public void setVariableScope(VariableScope variableScope)
      Sets the variable scope for this closure.
      Parameters:
      variableScope - the VariableScope to associate with this closure; may be null
    • getText

      public String getText()
      Description copied from class: ASTNode
      Returns a human-readable text representation of this AST node. Used for debugging and error messages. Default implementation returns a message indicating the representation is not yet implemented for this node type.
      Overrides:
      getText in class ASTNode
      Returns:
      text representation of this node, or placeholder for unimplemented types
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • transformExpression

      public Expression transformExpression(ExpressionTransformer transformer)
      Description copied from class: Expression
      Transforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.
      Specified by:
      transformExpression in class Expression
      Parameters:
      transformer - the ExpressionTransformer to apply
      Returns:
      a transformed copy of this expression (or this expression itself if no changes are needed)
    • visit

      public void visit(GroovyCodeVisitor visitor)
      Description copied from class: ASTNode
      Accepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.
      Overrides:
      visit in class ASTNode
      Parameters:
      visitor - the GroovyCodeVisitor to process this node