public abstract class CodeVisitorSupport
extends Object
implements GroovyCodeVisitor
Abstract base class for implementing the GroovyCodeVisitor interface, providing default implementations for all visit methods that perform depth-first traversal of the AST.
This class implements the visitor design pattern for Groovy AST nodes. Subclasses may override specific visit methods to perform custom processing, while other visit methods automatically traverse child nodes. Default implementations delegate to child nodes, allowing for simple tree traversal without accumulating logic in each subclass.
The traversal pattern follows the structure of the AST:
Subclasses typically override visit* methods of interest and call
super.visit*(node) to maintain the default traversal behavior or to
perform post-processing after traversing children.
| Type Params | Return Type | Name and description |
|---|---|---|
|
protected void |
afterSwitchCaseStatementsVisited(SwitchStatement statement)Hook method called after all case statements are visited, but before the default statement. |
|
protected void |
afterSwitchConditionExpressionVisited(SwitchStatement statement)Hook method called after the switch condition expression is visited, but before case statements. |
|
public void |
visitArgumentlistExpression(ArgumentListExpression expression)Visits an ArgumentListExpression, treating it as a tuple expression. |
|
public void |
visitArrayExpression(ArrayExpression expression)Visits an ArrayExpression, traversing element expressions and size expressions. |
|
public void |
visitAssertStatement(AssertStatement statement)Visits an AssertStatement, traversing the assertion condition and optional message expression. |
|
public void |
visitAttributeExpression(AttributeExpression expression)Visits an AttributeExpression, traversing the object and attribute name expressions. |
|
public void |
visitBinaryExpression(BinaryExpression expression)Visits a BinaryExpression, traversing left and right operand expressions. |
|
public void |
visitBitwiseNegationExpression(BitwiseNegationExpression expression)Visits a BitwiseNegationExpression, traversing the operand expression. |
|
public void |
visitBlockStatement(BlockStatement block)Visits a BlockStatement, traversing each contained statement in order. |
|
public void |
visitBooleanExpression(BooleanExpression expression)Visits a BooleanExpression, traversing the contained expression. |
|
public void |
visitBreakStatement(BreakStatement statement)Visits a BreakStatement. |
|
public void |
visitBytecodeExpression(BytecodeExpression expression)Visits a BytecodeExpression. |
|
public void |
visitCaseStatement(CaseStatement statement)Visits a CaseStatement, traversing the case expression and code block. |
|
public void |
visitCastExpression(CastExpression expression)Visits a CastExpression, traversing the operand expression. |
|
public void |
visitCatchStatement(CatchStatement statement)Visits a CatchStatement, traversing the catch block code. |
|
public void |
visitClassExpression(ClassExpression expression)Visits a ClassExpression. |
|
public void |
visitClosureExpression(ClosureExpression expression)Visits a ClosureExpression, traversing parameter initializers and the closure code block. |
|
public void |
visitClosureListExpression(ClosureListExpression expression)Visits a ClosureListExpression, traversing all contained expressions. |
|
public void |
visitConstantExpression(ConstantExpression expression)Visits a ConstantExpression. |
|
public void |
visitConstructorCallExpression(ConstructorCallExpression call)Visits a ConstructorCallExpression, traversing its argument list. |
|
public void |
visitContinueStatement(ContinueStatement statement)Visits a ContinueStatement. |
|
public void |
visitDeclarationExpression(DeclarationExpression expression)Visits a DeclarationExpression, treating it as a binary expression. |
|
public void |
visitDoWhileLoop(DoWhileStatement statement)Visits a DoWhileStatement, traversing the loop body before the boolean condition. |
|
public void |
visitEmptyStatement(EmptyStatement statement)Visits an EmptyStatement. |
|
public void |
visitExpressionStatement(ExpressionStatement statement)Visits an ExpressionStatement, traversing its contained expression. |
|
public void |
visitFieldExpression(FieldExpression expression)Visits a FieldExpression. |
|
public void |
visitForLoop(ForStatement statement)Visits a ForStatement, traversing the collection expression and loop body. |
|
public void |
visitGStringExpression(GStringExpression expression)Visits a GStringExpression, traversing string parts and interpolated value expressions. |
|
public void |
visitIfElse(IfStatement statement)Visits an IfStatement, traversing the condition, if-block, and optional else-block. |
|
public void |
visitLambdaExpression(LambdaExpression expression)Visits a LambdaExpression, treating it as a closure expression. |
|
public void |
visitListExpression(ListExpression expression)Visits a ListExpression, traversing all contained expressions. |
|
public void |
visitMapEntryExpression(MapEntryExpression expression)Visits a MapEntryExpression, traversing key and value expressions. |
|
public void |
visitMapExpression(MapExpression expression)Visits a MapExpression, traversing all map entry expressions. |
|
public void |
visitMethodCallExpression(MethodCallExpression call)Visits a MethodCallExpression, traversing the object expression, method expression, and argument list. |
|
public void |
visitMethodPointerExpression(MethodPointerExpression expression)Visits a MethodPointerExpression, traversing the object and method name expressions. |
|
public void |
visitMethodReferenceExpression(MethodReferenceExpression expression)Visits a MethodReferenceExpression, treating it as a method pointer. |
|
public void |
visitNotExpression(NotExpression expression)Visits a NotExpression, traversing the operand expression. |
|
public void |
visitPostfixExpression(PostfixExpression expression)Visits a PostfixExpression, traversing the operand expression. |
|
public void |
visitPrefixExpression(PrefixExpression expression)Visits a PrefixExpression, traversing the operand expression. |
|
public void |
visitPropertyExpression(PropertyExpression expression)Visits a PropertyExpression, traversing the object and property name expressions. |
|
public void |
visitRangeExpression(RangeExpression expression)Visits a RangeExpression, traversing from and to boundary expressions. |
|
public void |
visitReturnStatement(ReturnStatement statement)Visits a ReturnStatement, traversing its return expression. |
|
public void |
visitShortTernaryExpression(ElvisOperatorExpression expression)Visits a ElvisOperatorExpression, treating it as a ternary expression. |
|
public void |
visitSpreadExpression(SpreadExpression expression)Visits a SpreadExpression, traversing the operand expression. |
|
public void |
visitSpreadMapExpression(SpreadMapExpression expression)Visits a SpreadMapExpression, traversing the operand expression. |
|
public void |
visitStaticMethodCallExpression(StaticMethodCallExpression call)Visits a StaticMethodCallExpression, traversing its argument list. |
|
public void |
visitSwitch(SwitchStatement statement)Visits a SwitchStatement, traversing the switch expression, case statements, and default statement. |
|
public void |
visitSynchronizedStatement(SynchronizedStatement statement)Visits a SynchronizedStatement, traversing the synchronization expression and code block. |
|
public void |
visitTernaryExpression(TernaryExpression expression)Visits a TernaryExpression, traversing the condition, true-branch, and false-branch expressions. |
|
public void |
visitThrowStatement(ThrowStatement statement)Visits a ThrowStatement, traversing the exception expression. |
|
public void |
visitTryCatchFinally(TryCatchStatement statement)Visits a TryCatchStatement, traversing resource statements, try block, catch statements, and finally block. |
|
public void |
visitTupleExpression(TupleExpression expression)Visits a TupleExpression, traversing all contained expressions. |
|
public void |
visitUnaryMinusExpression(UnaryMinusExpression expression)Visits a UnaryMinusExpression, traversing the operand expression. |
|
public void |
visitUnaryPlusExpression(UnaryPlusExpression expression)Visits a UnaryPlusExpression, traversing the operand expression. |
|
public void |
visitVariableExpression(VariableExpression expression)Visits a VariableExpression. |
|
public void |
visitWhileLoop(WhileStatement statement)Visits a WhileStatement, traversing the boolean condition and loop body. |
Hook method called after all case statements are visited, but before the default statement. Subclasses may override to perform processing between cases and default.
statement - the switch statement being visitedHook method called after the switch condition expression is visited, but before case statements. Subclasses may override to perform processing between condition and cases.
statement - the switch statement being visitedVisits an ArgumentListExpression, treating it as a tuple expression.
expression - the argument list expressionVisits an ArrayExpression, traversing element expressions and size expressions.
expression - the array expressionVisits an AssertStatement, traversing the assertion condition and optional message expression.
statement - the assert statementVisits an AttributeExpression, traversing the object and attribute name expressions.
expression - the attribute expressionVisits a BinaryExpression, traversing left and right operand expressions.
expression - the binary expressionVisits a BitwiseNegationExpression, traversing the operand expression.
expression - the bitwise negation expressionVisits a BlockStatement, traversing each contained statement in order.
block - the block statement to visit, may contain multiple statementsVisits a BooleanExpression, traversing the contained expression.
expression - the boolean expressionVisits a BreakStatement. No traversal is performed as break statements contain no child nodes.
statement - the break statementVisits a BytecodeExpression. No traversal is performed as bytecode expressions are terminal.
expression - the bytecode expressionVisits a CaseStatement, traversing the case expression and code block.
statement - the case statementVisits a CastExpression, traversing the operand expression.
expression - the cast expressionVisits a CatchStatement, traversing the catch block code.
statement - the catch statementVisits a ClassExpression. No traversal is performed as class expressions contain no child expressions.
expression - the class expressionVisits a ClosureExpression, traversing parameter initializers and the closure code block.
expression - the closure expressionVisits a ClosureListExpression, traversing all contained expressions.
expression - the closure list expressionVisits a ConstantExpression. No traversal is performed as constants contain no child expressions.
expression - the constant expressionVisits a ConstructorCallExpression, traversing its argument list.
call - the constructor call expressionVisits a ContinueStatement. No traversal is performed as continue statements contain no child nodes.
statement - the continue statementVisits a DeclarationExpression, treating it as a binary expression.
expression - the declaration expressionVisits a DoWhileStatement, traversing the loop body before the boolean condition.
statement - the do-while loop statementVisits an EmptyStatement. No traversal is performed as empty statements contain no child nodes.
statement - the empty statementVisits an ExpressionStatement, traversing its contained expression.
statement - the expression statementVisits a FieldExpression. No traversal is performed as field expressions contain no child expressions.
expression - the field expressionVisits a ForStatement, traversing the collection expression and loop body.
statement - the for loop statementVisits a GStringExpression, traversing string parts and interpolated value expressions.
expression - the GString expressionVisits an IfStatement, traversing the condition, if-block, and optional else-block.
statement - the if-else statementVisits a LambdaExpression, treating it as a closure expression.
expression - the lambda expressionVisits a ListExpression, traversing all contained expressions.
expression - the list expressionVisits a MapEntryExpression, traversing key and value expressions.
expression - the map entry expressionVisits a MapExpression, traversing all map entry expressions.
expression - the map expressionVisits a MethodCallExpression, traversing the object expression, method expression, and argument list.
call - the method call expressionVisits a MethodPointerExpression, traversing the object and method name expressions.
expression - the method pointer expressionVisits a MethodReferenceExpression, treating it as a method pointer.
expression - the method reference expressionVisits a NotExpression, traversing the operand expression.
expression - the not expressionVisits a PostfixExpression, traversing the operand expression.
expression - the postfix expressionVisits a PrefixExpression, traversing the operand expression.
expression - the prefix expressionVisits a PropertyExpression, traversing the object and property name expressions.
expression - the property expressionVisits a RangeExpression, traversing from and to boundary expressions.
expression - the range expressionVisits a ReturnStatement, traversing its return expression.
statement - the return statementVisits a ElvisOperatorExpression, treating it as a ternary expression.
expression - the elvis operator expressionVisits a SpreadExpression, traversing the operand expression.
expression - the spread expressionVisits a SpreadMapExpression, traversing the operand expression.
expression - the spread map expressionVisits a StaticMethodCallExpression, traversing its argument list.
call - the static method call expressionVisits a SwitchStatement, traversing the switch expression, case statements, and default statement.
statement - the switch statementVisits a SynchronizedStatement, traversing the synchronization expression and code block.
statement - the synchronized statementVisits a TernaryExpression, traversing the condition, true-branch, and false-branch expressions.
expression - the ternary expressionVisits a ThrowStatement, traversing the exception expression.
statement - the throw statementVisits a TryCatchStatement, traversing resource statements, try block, catch statements, and finally block.
statement - the try-catch-finally statementVisits a TupleExpression, traversing all contained expressions.
expression - the tuple expressionVisits a UnaryMinusExpression, traversing the operand expression.
expression - the unary minus expressionVisits a UnaryPlusExpression, traversing the operand expression.
expression - the unary plus expressionVisits a VariableExpression. No traversal is performed as variable expressions contain no child expressions.
expression - the variable expressionVisits a WhileStatement, traversing the boolean condition and loop body.
statement - the while loop statement