Package org.codehaus.groovy.ast.expr
Class ClosureExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.ClosureExpression
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>,NodeMetaDataHandler
- Direct Known Subclasses:
LambdaExpression
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:
-
Field Summary
Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionClosureExpression(Parameter[] parameters, Statement code) Creates a closure expression with the specified parameters and code body. -
Method Summary
Modifier and TypeMethodDescriptiongetCode()Returns the code statement that represents the body of this closure.Returns the parameter definitions for this closure.getText()Returns a human-readable text representation of this AST node.Returns the variable scope associated with this closure.booleanIndicates whether one or more explicit parameters are specified for this closure.voidSets the code statement for this closure body.voidsetVariableScope(VariableScope variableScope) Sets the variable scope for this closure.toString()transformExpression(ExpressionTransformer transformer) Transforms this expression and any nested expressions according to the provided transformer.voidvisit(GroovyCodeVisitor visitor) Accepts a code visitor for AST traversal and transformation.Methods inherited from class org.codehaus.groovy.ast.expr.Expression
getType, setType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
Constructor Details
-
ClosureExpression
Creates a closure expression with the specified parameters and code body.
-
-
Method Details
-
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
Statementrepresenting the closure body; may be null
-
setCode
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 newStatementrepresenting the closure body; must not be null
-
getParameters
Returns the parameter definitions for this closure.- Returns:
- an array of
Parameterdefinitions, 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
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
VariableScopefor this closure; may be null if not yet initialized
-
setVariableScope
Sets the variable scope for this closure.- Parameters:
variableScope- theVariableScopeto associate with this closure; may be null
-
getText
Description copied from class:ASTNodeReturns 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. -
toString
-
transformExpression
Description copied from class:ExpressionTransforms 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:
transformExpressionin classExpression- Parameters:
transformer- theExpressionTransformerto apply- Returns:
- a transformed copy of this expression (or this expression itself if no changes are needed)
-
visit
Description copied from class:ASTNodeAccepts 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:
visitin classASTNode- Parameters:
visitor- theGroovyCodeVisitorto process this node
-