Package org.codehaus.groovy.ast
Class CodeVisitorSupport
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
- All Implemented Interfaces:
GroovyCodeVisitor
- Direct Known Subclasses:
ClassCodeVisitorSupport,ClosureWriter.CorrectAccessedVariableVisitor,CollectRecursiveCalls,GinqAstBaseVisitor,GinqAstBuilder,HasRecursiveCalls,MethodInvocationTrap,ReturnAdderForClosures,SqlOrderByVisitor,SqlWhereVisitor,StatementReplacer,TransformingCodeVisitor,VariableExpressionReplacer,VerifierCodeVisitor
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:
- Block and control flow statements recursively visit their contained statements
- Expressions recursively visit their operand expressions
- Terminal expressions (constants, variables) perform no traversal
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.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidafterSwitchCaseStatementsVisited(SwitchStatement statement) Hook method called after all case statements are visited, but before the default statement.protected voidHook method called after the switch condition expression is visited, but before case statements.voidvisitArgumentlistExpression(ArgumentListExpression expression) Visits anArgumentListExpression, treating it as a tuple expression.voidvisitArrayExpression(ArrayExpression expression) Visits anArrayExpression, traversing element expressions and size expressions.voidvisitAssertStatement(AssertStatement statement) Visits anAssertStatement, traversing the assertion condition and optional message expression.voidvisitAttributeExpression(AttributeExpression expression) Visits anAttributeExpression, traversing the object and attribute name expressions.voidvisitBinaryExpression(BinaryExpression expression) Visits aBinaryExpression, traversing left and right operand expressions.voidVisits aBitwiseNegationExpression, traversing the operand expression.voidVisits aBlockStatement, traversing each contained statement in order.voidvisitBooleanExpression(BooleanExpression expression) Visits aBooleanExpression, traversing the contained expression.voidvisitBreakStatement(BreakStatement statement) Visits aBreakStatement.voidvisitBytecodeExpression(BytecodeExpression expression) Visits aBytecodeExpression.voidvisitCaseStatement(CaseStatement statement) Visits aCaseStatement, traversing the case expression and code block.voidvisitCastExpression(CastExpression expression) Visits aCastExpression, traversing the operand expression.voidvisitCatchStatement(CatchStatement statement) Visits aCatchStatement, traversing the catch block code.voidvisitClassExpression(ClassExpression expression) Visits aClassExpression.voidvisitClosureExpression(ClosureExpression expression) Visits aClosureExpression, traversing parameter initializers and the closure code block.voidvisitClosureListExpression(ClosureListExpression expression) Visits aClosureListExpression, traversing all contained expressions.voidvisitConstantExpression(ConstantExpression expression) Visits aConstantExpression.voidVisits aConstructorCallExpression, traversing its argument list.voidvisitContinueStatement(ContinueStatement statement) Visits aContinueStatement.voidvisitDeclarationExpression(DeclarationExpression expression) Visits aDeclarationExpression, treating it as a binary expression.voidvisitDoWhileLoop(DoWhileStatement statement) Visits aDoWhileStatement, traversing the loop body before the boolean condition.voidvisitEmptyStatement(EmptyStatement statement) Visits anEmptyStatement.voidvisitExpressionStatement(ExpressionStatement statement) Visits anExpressionStatement, traversing its contained expression.voidvisitFieldExpression(FieldExpression expression) Visits aFieldExpression.voidvisitForLoop(ForStatement statement) Visits aForStatement, traversing the collection expression and loop body.voidvisitGStringExpression(GStringExpression expression) Visits aGStringExpression, traversing string parts and interpolated value expressions.voidvisitIfElse(IfStatement statement) Visits anIfStatement, traversing the condition, if-block, and optional else-block.voidvisitLambdaExpression(LambdaExpression expression) Visits aLambdaExpression, treating it as a closure expression.voidvisitListExpression(ListExpression expression) Visits aListExpression, traversing all contained expressions.voidvisitMapEntryExpression(MapEntryExpression expression) Visits aMapEntryExpression, traversing key and value expressions.voidvisitMapExpression(MapExpression expression) Visits aMapExpression, traversing all map entry expressions.voidVisits aMethodCallExpression, traversing the object expression, method expression, and argument list.voidvisitMethodPointerExpression(MethodPointerExpression expression) Visits aMethodPointerExpression, traversing the object and method name expressions.voidVisits aMethodReferenceExpression, treating it as a method pointer.voidvisitNotExpression(NotExpression expression) Visits aNotExpression, traversing the operand expression.voidvisitPostfixExpression(PostfixExpression expression) Visits aPostfixExpression, traversing the operand expression.voidvisitPrefixExpression(PrefixExpression expression) Visits aPrefixExpression, traversing the operand expression.voidvisitPropertyExpression(PropertyExpression expression) Visits aPropertyExpression, traversing the object and property name expressions.voidvisitRangeExpression(RangeExpression expression) Visits aRangeExpression, traversing from and to boundary expressions.voidvisitReturnStatement(ReturnStatement statement) Visits aReturnStatement, traversing its return expression.voidvisitShortTernaryExpression(ElvisOperatorExpression expression) Visits aElvisOperatorExpression, treating it as a ternary expression.voidvisitSpreadExpression(SpreadExpression expression) Visits aSpreadExpression, traversing the operand expression.voidvisitSpreadMapExpression(SpreadMapExpression expression) Visits aSpreadMapExpression, traversing the operand expression.voidVisits aStaticMethodCallExpression, traversing its argument list.voidvisitSwitch(SwitchStatement statement) Visits aSwitchStatement, traversing the switch expression, case statements, and default statement.voidvisitSynchronizedStatement(SynchronizedStatement statement) Visits aSynchronizedStatement, traversing the synchronization expression and code block.voidvisitTernaryExpression(TernaryExpression expression) Visits aTernaryExpression, traversing the condition, true-branch, and false-branch expressions.voidvisitThrowStatement(ThrowStatement statement) Visits aThrowStatement, traversing the exception expression.voidvisitTryCatchFinally(TryCatchStatement statement) Visits aTryCatchStatement, traversing resource statements, try block, catch statements, and finally block.voidvisitTupleExpression(TupleExpression expression) Visits aTupleExpression, traversing all contained expressions.voidvisitUnaryMinusExpression(UnaryMinusExpression expression) Visits aUnaryMinusExpression, traversing the operand expression.voidvisitUnaryPlusExpression(UnaryPlusExpression expression) Visits aUnaryPlusExpression, traversing the operand expression.voidvisitVariableExpression(VariableExpression expression) Visits aVariableExpression.voidvisitWhileLoop(WhileStatement statement) Visits aWhileStatement, traversing the boolean condition and loop body.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Constructor Details
-
CodeVisitorSupport
public CodeVisitorSupport()
-
-
Method Details
-
visitBlockStatement
Visits aBlockStatement, traversing each contained statement in order.- Specified by:
visitBlockStatementin interfaceGroovyCodeVisitor- Parameters:
block- the block statement to visit, may contain multiple statements- See Also:
-
visitForLoop
Visits aForStatement, traversing the collection expression and loop body.- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Parameters:
statement- the for loop statement
-
visitWhileLoop
Visits aWhileStatement, traversing the boolean condition and loop body.- Specified by:
visitWhileLoopin interfaceGroovyCodeVisitor- Parameters:
statement- the while loop statement
-
visitDoWhileLoop
Visits aDoWhileStatement, traversing the loop body before the boolean condition.- Specified by:
visitDoWhileLoopin interfaceGroovyCodeVisitor- Parameters:
statement- the do-while loop statement
-
visitIfElse
Visits anIfStatement, traversing the condition, if-block, and optional else-block.- Specified by:
visitIfElsein interfaceGroovyCodeVisitor- Parameters:
statement- the if-else statement
-
visitExpressionStatement
Visits anExpressionStatement, traversing its contained expression.- Specified by:
visitExpressionStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the expression statement
-
visitReturnStatement
Visits aReturnStatement, traversing its return expression.- Specified by:
visitReturnStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the return statement
-
visitAssertStatement
Visits anAssertStatement, traversing the assertion condition and optional message expression.- Specified by:
visitAssertStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the assert statement
-
visitTryCatchFinally
Visits aTryCatchStatement, traversing resource statements, try block, catch statements, and finally block.- Specified by:
visitTryCatchFinallyin interfaceGroovyCodeVisitor- Parameters:
statement- the try-catch-finally statement
-
visitCatchStatement
Visits aCatchStatement, traversing the catch block code.- Specified by:
visitCatchStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the catch statement
-
visitSwitch
Visits aSwitchStatement, traversing the switch expression, case statements, and default statement.- Specified by:
visitSwitchin interfaceGroovyCodeVisitor- Parameters:
statement- the switch statement
-
afterSwitchConditionExpressionVisited
Hook method called after the switch condition expression is visited, but before case statements. Subclasses may override to perform processing between condition and cases.- Parameters:
statement- the switch statement being visited- Since:
- 3.0.0
-
afterSwitchCaseStatementsVisited
Hook method called after all case statements are visited, but before the default statement. Subclasses may override to perform processing between cases and default.- Parameters:
statement- the switch statement being visited- Since:
- 5.0.0
-
visitCaseStatement
Visits aCaseStatement, traversing the case expression and code block.- Specified by:
visitCaseStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the case statement
-
visitBreakStatement
Visits aBreakStatement. No traversal is performed as break statements contain no child nodes.- Specified by:
visitBreakStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the break statement
-
visitContinueStatement
Visits aContinueStatement. No traversal is performed as continue statements contain no child nodes.- Specified by:
visitContinueStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the continue statement
-
visitSynchronizedStatement
Visits aSynchronizedStatement, traversing the synchronization expression and code block.- Specified by:
visitSynchronizedStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the synchronized statement
-
visitThrowStatement
Visits aThrowStatement, traversing the exception expression.- Specified by:
visitThrowStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the throw statement
-
visitEmptyStatement
Visits anEmptyStatement. No traversal is performed as empty statements contain no child nodes.- Specified by:
visitEmptyStatementin interfaceGroovyCodeVisitor- Parameters:
statement- the empty statement
-
visitMethodCallExpression
Visits aMethodCallExpression, traversing the object expression, method expression, and argument list.- Specified by:
visitMethodCallExpressionin interfaceGroovyCodeVisitor- Parameters:
call- the method call expression
-
visitStaticMethodCallExpression
Visits aStaticMethodCallExpression, traversing its argument list.- Specified by:
visitStaticMethodCallExpressionin interfaceGroovyCodeVisitor- Parameters:
call- the static method call expression
-
visitConstructorCallExpression
Visits aConstructorCallExpression, traversing its argument list.- Specified by:
visitConstructorCallExpressionin interfaceGroovyCodeVisitor- Parameters:
call- the constructor call expression
-
visitBinaryExpression
Visits aBinaryExpression, traversing left and right operand expressions.- Specified by:
visitBinaryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the binary expression
-
visitTernaryExpression
Visits aTernaryExpression, traversing the condition, true-branch, and false-branch expressions.- Specified by:
visitTernaryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the ternary expression
-
visitShortTernaryExpression
Visits aElvisOperatorExpression, treating it as a ternary expression.- Specified by:
visitShortTernaryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the elvis operator expression
-
visitPostfixExpression
Visits aPostfixExpression, traversing the operand expression.- Specified by:
visitPostfixExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the postfix expression
-
visitPrefixExpression
Visits aPrefixExpression, traversing the operand expression.- Specified by:
visitPrefixExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the prefix expression
-
visitBooleanExpression
Visits aBooleanExpression, traversing the contained expression.- Specified by:
visitBooleanExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the boolean expression
-
visitNotExpression
Visits aNotExpression, traversing the operand expression.- Specified by:
visitNotExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the not expression
-
visitClosureExpression
Visits aClosureExpression, traversing parameter initializers and the closure code block.- Specified by:
visitClosureExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the closure expression
-
visitLambdaExpression
Visits aLambdaExpression, treating it as a closure expression.- Specified by:
visitLambdaExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the lambda expression
-
visitTupleExpression
Visits aTupleExpression, traversing all contained expressions.- Specified by:
visitTupleExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the tuple expression
-
visitListExpression
Visits aListExpression, traversing all contained expressions.- Specified by:
visitListExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the list expression
-
visitArrayExpression
Visits anArrayExpression, traversing element expressions and size expressions.- Specified by:
visitArrayExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the array expression
-
visitMapExpression
Visits aMapExpression, traversing all map entry expressions.- Specified by:
visitMapExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the map expression
-
visitMapEntryExpression
Visits aMapEntryExpression, traversing key and value expressions.- Specified by:
visitMapEntryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the map entry expression
-
visitRangeExpression
Visits aRangeExpression, traversing from and to boundary expressions.- Specified by:
visitRangeExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the range expression
-
visitSpreadExpression
Visits aSpreadExpression, traversing the operand expression.- Specified by:
visitSpreadExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the spread expression
-
visitSpreadMapExpression
Visits aSpreadMapExpression, traversing the operand expression.- Specified by:
visitSpreadMapExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the spread map expression
-
visitMethodPointerExpression
Visits aMethodPointerExpression, traversing the object and method name expressions.- Specified by:
visitMethodPointerExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the method pointer expression
-
visitMethodReferenceExpression
Visits aMethodReferenceExpression, treating it as a method pointer.- Specified by:
visitMethodReferenceExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the method reference expression
-
visitUnaryMinusExpression
Visits aUnaryMinusExpression, traversing the operand expression.- Specified by:
visitUnaryMinusExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the unary minus expression
-
visitUnaryPlusExpression
Visits aUnaryPlusExpression, traversing the operand expression.- Specified by:
visitUnaryPlusExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the unary plus expression
-
visitBitwiseNegationExpression
Visits aBitwiseNegationExpression, traversing the operand expression.- Specified by:
visitBitwiseNegationExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the bitwise negation expression
-
visitCastExpression
Visits aCastExpression, traversing the operand expression.- Specified by:
visitCastExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the cast expression
-
visitConstantExpression
Visits aConstantExpression. No traversal is performed as constants contain no child expressions.- Specified by:
visitConstantExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the constant expression
-
visitClassExpression
Visits aClassExpression. No traversal is performed as class expressions contain no child expressions.- Specified by:
visitClassExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the class expression
-
visitVariableExpression
Visits aVariableExpression. No traversal is performed as variable expressions contain no child expressions.- Specified by:
visitVariableExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the variable expression
-
visitDeclarationExpression
Visits aDeclarationExpression, treating it as a binary expression.- Specified by:
visitDeclarationExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the declaration expression
-
visitPropertyExpression
Visits aPropertyExpression, traversing the object and property name expressions.- Specified by:
visitPropertyExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the property expression
-
visitAttributeExpression
Visits anAttributeExpression, traversing the object and attribute name expressions.- Specified by:
visitAttributeExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the attribute expression
-
visitFieldExpression
Visits aFieldExpression. No traversal is performed as field expressions contain no child expressions.- Specified by:
visitFieldExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the field expression
-
visitGStringExpression
Visits aGStringExpression, traversing string parts and interpolated value expressions.- Specified by:
visitGStringExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the GString expression
-
visitArgumentlistExpression
Visits anArgumentListExpression, treating it as a tuple expression.- Specified by:
visitArgumentlistExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the argument list expression
-
visitClosureListExpression
Visits aClosureListExpression, traversing all contained expressions.- Specified by:
visitClosureListExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the closure list expression
-
visitBytecodeExpression
Visits aBytecodeExpression. No traversal is performed as bytecode expressions are terminal.- Specified by:
visitBytecodeExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- the bytecode expression
-