Class ContextualClassCodeVisitor
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.codehaus.groovy.macro.matcher.ContextualClassCodeVisitor
- All Implemented Interfaces:
GroovyClassVisitor,GroovyCodeVisitor,ErrorCollecting
A class code visitor which is capable of remembering the context of the current
visit. This makes it easier for subclasses to perform context-dependent transformations,
where for example it is necessary to check the parent nodes of an AST node before
performing some operations.
- Since:
- 2.5.0
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a visitor with an initial root context. -
Method Summary
Modifier and TypeMethodDescriptionReturns the most recently popped traversal context.Returns the current traversal context.Returns the current traversal path, starting with the last completed context.static List<ASTNodePredicate>matchByClass(Class<ASTNode>... classes) Creates class-based predicates for the supplied AST node classes.pathMatches(List<ASTNodePredicate> predicates) Returns the current path when all supplied predicates match successive parents.Returns the path up to the first node whose class matchesnode.pathUpTo(Class<ASTNode> node, ASTNodePredicate predicate) Returns the path up to the first node that matches the supplied class and predicate.pathUpTo(ASTNodePredicate predicate) Returns the path up to the first node matching the supplied predicate.protected TreeContextPops the current traversal context.protected voidpushContext(ASTNode node) Pushes a child context for the supplied AST node.protected voidpushContext(TreeContext ctx) Pushes an explicit traversal context.voidvisitArrayExpression(ArrayExpression expression) Visits an array expression while tracking traversal context.voidvisitAssertStatement(AssertStatement statement) Visits an assert statement while tracking traversal context.voidvisitAttributeExpression(AttributeExpression expression) Visits an attribute expression while tracking traversal context.voidvisitBinaryExpression(BinaryExpression expression) Visits a binary expression while tracking traversal context.voidVisits a bitwise-negation expression while tracking traversal context.voidVisits a block statement while tracking traversal context.voidvisitBooleanExpression(BooleanExpression expression) Visits a boolean expression while tracking traversal context.voidvisitBreakStatement(BreakStatement statement) Visits a break statement while tracking traversal context.voidVisits a bytecode expression while tracking traversal context.voidvisitCaseStatement(CaseStatement statement) Visits a case statement while tracking traversal context.voidvisitCastExpression(CastExpression expression) Visits a cast expression while tracking traversal context.voidvisitCatchStatement(CatchStatement statement) Visits a catch statement while tracking traversal context.voidvisitClass(ClassNode node) Visits a class node while tracking traversal context.voidvisitClassExpression(ClassExpression expression) Visits a class expression while tracking traversal context.voidvisitClosureExpression(ClosureExpression expression) Visits a closure expression while tracking traversal context.voidVisits a closure-list expression while tracking traversal context.voidvisitConstantExpression(ConstantExpression expression) Visits a constant expression while tracking traversal context.voidVisits a constructor call expression while tracking traversal context.protected voidvisitConstructorOrMethod(MethodNode node, boolean isConstructor) Visits a constructor or method while tracking traversal context.voidvisitContinueStatement(ContinueStatement statement) Visits a continue statement while tracking traversal context.voidVisits a do-while loop while tracking traversal context.voidvisitEmptyStatement(EmptyStatement statement) Visits an empty statement while tracking traversal context.voidvisitExpressionStatement(ExpressionStatement statement) Visits an expression statement while tracking traversal context.voidvisitField(FieldNode node) Visits a field node while tracking traversal context.voidvisitFieldExpression(FieldExpression expression) Visits a field expression while tracking traversal context.voidvisitForLoop(ForStatement forLoop) Visits a for loop while tracking traversal context.voidvisitGStringExpression(GStringExpression expression) Visits a GString expression while tracking traversal context.voidvisitIfElse(IfStatement ifElse) Visits an if/else statement while tracking traversal context.voidvisitImports(ModuleNode node) Visits module imports while tracking traversal context.voidvisitListExpression(ListExpression expression) Visits a list expression while tracking traversal context.voidvisitMapEntryExpression(MapEntryExpression expression) Visits a map-entry expression while tracking traversal context.voidvisitMapExpression(MapExpression expression) Visits a map expression while tracking traversal context.voidVisits a method call expression while tracking traversal context.voidvisitMethodPointerExpression(MethodPointerExpression expression) Visits a method-pointer expression while tracking traversal context.voidvisitNotExpression(NotExpression expression) Visits a not expression while tracking traversal context.voidvisitPackage(PackageNode node) Visits a package node while tracking traversal context.voidvisitPostfixExpression(PostfixExpression expression) Visits a postfix expression while tracking traversal context.voidvisitPrefixExpression(PrefixExpression expression) Visits a prefix expression while tracking traversal context.voidvisitProperty(PropertyNode node) Visits a property node while tracking traversal context.voidvisitPropertyExpression(PropertyExpression expression) Visits a property expression while tracking traversal context.voidvisitRangeExpression(RangeExpression expression) Visits a range expression while tracking traversal context.voidvisitReturnStatement(ReturnStatement statement) Visits a return statement while tracking traversal context.voidvisitShortTernaryExpression(ElvisOperatorExpression expression) Visits an Elvis expression while tracking traversal context.voidvisitSpreadExpression(SpreadExpression expression) Visits a spread expression while tracking traversal context.voidvisitSpreadMapExpression(SpreadMapExpression expression) Visits a spread-map expression while tracking traversal context.voidVisits a static method call expression while tracking traversal context.voidvisitSwitch(SwitchStatement statement) Visits a switch statement while tracking traversal context.voidvisitSynchronizedStatement(SynchronizedStatement statement) Visits a synchronized statement while tracking traversal context.voidvisitTernaryExpression(TernaryExpression expression) Visits a ternary expression while tracking traversal context.voidvisitThrowStatement(ThrowStatement statement) Visits a throw statement while tracking traversal context.voidvisitTryCatchFinally(TryCatchStatement statement) Visits a try/catch/finally statement while tracking traversal context.voidvisitTupleExpression(TupleExpression expression) Visits a tuple expression while tracking traversal context.voidvisitUnaryMinusExpression(UnaryMinusExpression expression) Visits a unary-minus expression while tracking traversal context.voidvisitUnaryPlusExpression(UnaryPlusExpression expression) Visits a unary-plus expression while tracking traversal context.voidvisitVariableExpression(VariableExpression expression) Visits a variable expression while tracking traversal context.voidvisitWhileLoop(WhileStatement loop) Visits a while loop while tracking traversal context.Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, getSourceUnit, visitAnnotation, visitAnnotations, visitAnnotations, visitClassCodeContainer, visitConstructor, visitDeclarationExpression, visitMethod, visitObjectInitializerStatements, visitStatement, visitStatementAnnotationsMethods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitLambdaExpression, visitMethodReferenceExpressionMethods 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
-
ContextualClassCodeVisitor
public ContextualClassCodeVisitor()Creates a visitor with an initial root context.
-
-
Method Details
-
getTreeContext
Returns the current traversal context.- Returns:
- the current context, or
null
-
getLastContext
Returns the most recently popped traversal context.- Returns:
- the last completed context
-
pushContext
Pushes an explicit traversal context.- Parameters:
ctx- the context to push
-
popContext
Pops the current traversal context.- Returns:
- the popped context
-
pushContext
Pushes a child context for the supplied AST node.- Parameters:
node- the node to enter
-
visitClass
Visits a class node while tracking traversal context.- Specified by:
visitClassin interfaceGroovyClassVisitor- Overrides:
visitClassin classClassCodeVisitorSupport- Parameters:
node- the class node to visit
-
visitPackage
Visits a package node while tracking traversal context.- Overrides:
visitPackagein classClassCodeVisitorSupport- Parameters:
node- the package node, may be null
-
visitImports
Visits module imports while tracking traversal context.- Overrides:
visitImportsin classClassCodeVisitorSupport- Parameters:
node- the module node containing imports, may be null
-
visitConstructorOrMethod
Visits a constructor or method while tracking traversal context.- Overrides:
visitConstructorOrMethodin classClassCodeVisitorSupport- Parameters:
node- the method or constructor nodeisConstructor- true if node is a constructor, false if it is a method
-
visitField
Visits a field node while tracking traversal context.- Specified by:
visitFieldin interfaceGroovyClassVisitor- Overrides:
visitFieldin classClassCodeVisitorSupport- Parameters:
node- the field node to visit
-
visitProperty
Visits a property node while tracking traversal context.- Specified by:
visitPropertyin interfaceGroovyClassVisitor- Overrides:
visitPropertyin classClassCodeVisitorSupport- Parameters:
node- the property node to visit
-
visitMethodCallExpression
Visits a method call expression while tracking traversal context.- Specified by:
visitMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMethodCallExpressionin classCodeVisitorSupport- Parameters:
call- the method call expression
-
visitStaticMethodCallExpression
Visits a static method call expression while tracking traversal context.- Specified by:
visitStaticMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitStaticMethodCallExpressionin classCodeVisitorSupport- Parameters:
call- the static method call expression
-
visitConstructorCallExpression
Visits a constructor call expression while tracking traversal context.- Specified by:
visitConstructorCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitConstructorCallExpressionin classCodeVisitorSupport- Parameters:
call- the constructor call expression
-
visitBinaryExpression
Visits a binary expression while tracking traversal context.- Specified by:
visitBinaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBinaryExpressionin classCodeVisitorSupport- Parameters:
expression- the binary expression
-
visitTernaryExpression
Visits a ternary expression while tracking traversal context.- Specified by:
visitTernaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitTernaryExpressionin classCodeVisitorSupport- Parameters:
expression- the ternary expression
-
visitShortTernaryExpression
Visits an Elvis expression while tracking traversal context.- Specified by:
visitShortTernaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitShortTernaryExpressionin classCodeVisitorSupport- Parameters:
expression- the elvis operator expression
-
visitPostfixExpression
Visits a postfix expression while tracking traversal context.- Specified by:
visitPostfixExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPostfixExpressionin classCodeVisitorSupport- Parameters:
expression- the postfix expression
-
visitPrefixExpression
Visits a prefix expression while tracking traversal context.- Specified by:
visitPrefixExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPrefixExpressionin classCodeVisitorSupport- Parameters:
expression- the prefix expression
-
visitBooleanExpression
Visits a boolean expression while tracking traversal context.- Specified by:
visitBooleanExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBooleanExpressionin classCodeVisitorSupport- Parameters:
expression- the boolean expression
-
visitNotExpression
Visits a not expression while tracking traversal context.- Specified by:
visitNotExpressionin interfaceGroovyCodeVisitor- Overrides:
visitNotExpressionin classCodeVisitorSupport- Parameters:
expression- the not expression
-
visitClosureExpression
Visits a closure expression while tracking traversal context.- Specified by:
visitClosureExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureExpressionin classClassCodeVisitorSupport- Parameters:
expression- the closure expression to visit
-
visitTupleExpression
Visits a tuple expression while tracking traversal context.- Specified by:
visitTupleExpressionin interfaceGroovyCodeVisitor- Overrides:
visitTupleExpressionin classCodeVisitorSupport- Parameters:
expression- the tuple expression
-
visitListExpression
Visits a list expression while tracking traversal context.- Specified by:
visitListExpressionin interfaceGroovyCodeVisitor- Overrides:
visitListExpressionin classCodeVisitorSupport- Parameters:
expression- the list expression
-
visitArrayExpression
Visits an array expression while tracking traversal context.- Specified by:
visitArrayExpressionin interfaceGroovyCodeVisitor- Overrides:
visitArrayExpressionin classCodeVisitorSupport- Parameters:
expression- the array expression
-
visitMapExpression
Visits a map expression while tracking traversal context.- Specified by:
visitMapExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMapExpressionin classCodeVisitorSupport- Parameters:
expression- the map expression
-
visitMapEntryExpression
Visits a map-entry expression while tracking traversal context.- Specified by:
visitMapEntryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMapEntryExpressionin classCodeVisitorSupport- Parameters:
expression- the map entry expression
-
visitRangeExpression
Visits a range expression while tracking traversal context.- Specified by:
visitRangeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitRangeExpressionin classCodeVisitorSupport- Parameters:
expression- the range expression
-
visitSpreadExpression
Visits a spread expression while tracking traversal context.- Specified by:
visitSpreadExpressionin interfaceGroovyCodeVisitor- Overrides:
visitSpreadExpressionin classCodeVisitorSupport- Parameters:
expression- the spread expression
-
visitSpreadMapExpression
Visits a spread-map expression while tracking traversal context.- Specified by:
visitSpreadMapExpressionin interfaceGroovyCodeVisitor- Overrides:
visitSpreadMapExpressionin classCodeVisitorSupport- Parameters:
expression- the spread map expression
-
visitMethodPointerExpression
Visits a method-pointer expression while tracking traversal context.- Specified by:
visitMethodPointerExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMethodPointerExpressionin classCodeVisitorSupport- Parameters:
expression- the method pointer expression
-
visitUnaryMinusExpression
Visits a unary-minus expression while tracking traversal context.- Specified by:
visitUnaryMinusExpressionin interfaceGroovyCodeVisitor- Overrides:
visitUnaryMinusExpressionin classCodeVisitorSupport- Parameters:
expression- the unary minus expression
-
visitUnaryPlusExpression
Visits a unary-plus expression while tracking traversal context.- Specified by:
visitUnaryPlusExpressionin interfaceGroovyCodeVisitor- Overrides:
visitUnaryPlusExpressionin classCodeVisitorSupport- Parameters:
expression- the unary plus expression
-
visitBitwiseNegationExpression
Visits a bitwise-negation expression while tracking traversal context.- Specified by:
visitBitwiseNegationExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBitwiseNegationExpressionin classCodeVisitorSupport- Parameters:
expression- the bitwise negation expression
-
visitCastExpression
Visits a cast expression while tracking traversal context.- Specified by:
visitCastExpressionin interfaceGroovyCodeVisitor- Overrides:
visitCastExpressionin classCodeVisitorSupport- Parameters:
expression- the cast expression
-
visitConstantExpression
Visits a constant expression while tracking traversal context.- Specified by:
visitConstantExpressionin interfaceGroovyCodeVisitor- Overrides:
visitConstantExpressionin classCodeVisitorSupport- Parameters:
expression- the constant expression
-
visitClassExpression
Visits a class expression while tracking traversal context.- Specified by:
visitClassExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClassExpressionin classCodeVisitorSupport- Parameters:
expression- the class expression
-
visitVariableExpression
Visits a variable expression while tracking traversal context.- Specified by:
visitVariableExpressionin interfaceGroovyCodeVisitor- Overrides:
visitVariableExpressionin classCodeVisitorSupport- Parameters:
expression- the variable expression
-
visitPropertyExpression
Visits a property expression while tracking traversal context.- Specified by:
visitPropertyExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPropertyExpressionin classCodeVisitorSupport- Parameters:
expression- the property expression
-
visitAttributeExpression
Visits an attribute expression while tracking traversal context.- Specified by:
visitAttributeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitAttributeExpressionin classCodeVisitorSupport- Parameters:
expression- the attribute expression
-
visitFieldExpression
Visits a field expression while tracking traversal context.- Specified by:
visitFieldExpressionin interfaceGroovyCodeVisitor- Overrides:
visitFieldExpressionin classCodeVisitorSupport- Parameters:
expression- the field expression
-
visitGStringExpression
Visits a GString expression while tracking traversal context.- Specified by:
visitGStringExpressionin interfaceGroovyCodeVisitor- Overrides:
visitGStringExpressionin classCodeVisitorSupport- Parameters:
expression- the GString expression
-
visitClosureListExpression
Visits a closure-list expression while tracking traversal context.- Specified by:
visitClosureListExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureListExpressionin classCodeVisitorSupport- Parameters:
cle- the closure list expression
-
visitBytecodeExpression
Visits a bytecode expression while tracking traversal context.- Specified by:
visitBytecodeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBytecodeExpressionin classCodeVisitorSupport- Parameters:
cle- the bytecode expression
-
visitAssertStatement
Visits an assert statement while tracking traversal context.- Specified by:
visitAssertStatementin interfaceGroovyCodeVisitor- Overrides:
visitAssertStatementin classClassCodeVisitorSupport- Parameters:
statement- the assert statement to visit
-
visitBlockStatement
Visits a block statement while tracking traversal context.- Specified by:
visitBlockStatementin interfaceGroovyCodeVisitor- Overrides:
visitBlockStatementin classClassCodeVisitorSupport- Parameters:
block- the block statement to visit- See Also:
-
visitBreakStatement
Visits a break statement while tracking traversal context.- Specified by:
visitBreakStatementin interfaceGroovyCodeVisitor- Overrides:
visitBreakStatementin classClassCodeVisitorSupport- Parameters:
statement- the break statement to visit
-
visitCaseStatement
Visits a case statement while tracking traversal context.- Specified by:
visitCaseStatementin interfaceGroovyCodeVisitor- Overrides:
visitCaseStatementin classClassCodeVisitorSupport- Parameters:
statement- the case statement to visit
-
visitCatchStatement
Visits a catch statement while tracking traversal context.- Specified by:
visitCatchStatementin interfaceGroovyCodeVisitor- Overrides:
visitCatchStatementin classClassCodeVisitorSupport- Parameters:
statement- the catch statement to visit
-
visitContinueStatement
Visits a continue statement while tracking traversal context.- Specified by:
visitContinueStatementin interfaceGroovyCodeVisitor- Overrides:
visitContinueStatementin classClassCodeVisitorSupport- Parameters:
statement- the continue statement to visit
-
visitDoWhileLoop
Visits a do-while loop while tracking traversal context.- Specified by:
visitDoWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitDoWhileLoopin classClassCodeVisitorSupport- Parameters:
loop- the do-while statement to visit
-
visitExpressionStatement
Visits an expression statement while tracking traversal context.- Specified by:
visitExpressionStatementin interfaceGroovyCodeVisitor- Overrides:
visitExpressionStatementin classClassCodeVisitorSupport- Parameters:
statement- the expression statement to visit
-
visitForLoop
Visits a for loop while tracking traversal context.- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Overrides:
visitForLoopin classClassCodeVisitorSupport- Parameters:
forLoop- the for statement to visit
-
visitIfElse
Visits an if/else statement while tracking traversal context.- Specified by:
visitIfElsein interfaceGroovyCodeVisitor- Overrides:
visitIfElsein classClassCodeVisitorSupport- Parameters:
ifElse- the if statement to visit
-
visitReturnStatement
Visits a return statement while tracking traversal context.- Specified by:
visitReturnStatementin interfaceGroovyCodeVisitor- Overrides:
visitReturnStatementin classClassCodeVisitorSupport- Parameters:
statement- the return statement to visit
-
visitSwitch
Visits a switch statement while tracking traversal context.- Specified by:
visitSwitchin interfaceGroovyCodeVisitor- Overrides:
visitSwitchin classClassCodeVisitorSupport- Parameters:
statement- the switch statement to visit
-
visitSynchronizedStatement
Visits a synchronized statement while tracking traversal context.- Specified by:
visitSynchronizedStatementin interfaceGroovyCodeVisitor- Overrides:
visitSynchronizedStatementin classClassCodeVisitorSupport- Parameters:
statement- the synchronized statement to visit
-
visitThrowStatement
Visits a throw statement while tracking traversal context.- Specified by:
visitThrowStatementin interfaceGroovyCodeVisitor- Overrides:
visitThrowStatementin classClassCodeVisitorSupport- Parameters:
statement- the throw statement to visit
-
visitTryCatchFinally
Visits a try/catch/finally statement while tracking traversal context.- Specified by:
visitTryCatchFinallyin interfaceGroovyCodeVisitor- Overrides:
visitTryCatchFinallyin classClassCodeVisitorSupport- Parameters:
statement- the try-catch statement to visit
-
visitWhileLoop
Visits a while loop while tracking traversal context.- Specified by:
visitWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitWhileLoopin classClassCodeVisitorSupport- Parameters:
loop- the while statement to visit
-
visitEmptyStatement
Visits an empty statement while tracking traversal context.- Specified by:
visitEmptyStatementin interfaceGroovyCodeVisitor- Overrides:
visitEmptyStatementin classCodeVisitorSupport- Parameters:
statement- the empty statement
-
getTreePath
Returns the current traversal path, starting with the last completed context.- Returns:
- the current tree path
-
pathMatches
Returns the current path when all supplied predicates match successive parents.- Parameters:
predicates- the predicates to match against the path- Returns:
- the matching path, or an empty list
-
pathUpTo
Returns the path up to the first node matching the supplied predicate.- Parameters:
predicate- the predicate that terminates the path- Returns:
- the matching path, or an empty list
-
pathUpTo
Returns the path up to the first node whose class matchesnode.- Parameters:
node- the node class that terminates the path- Returns:
- the matching path, or an empty list
-
pathUpTo
Returns the path up to the first node that matches the supplied class and predicate.- Parameters:
node- the node class that terminates the path, ornullpredicate- the predicate that terminates the path, ornull- Returns:
- the matching path, or an empty list
-
matchByClass
Creates class-based predicates for the supplied AST node classes.- Parameters:
classes- the classes to match- Returns:
- the corresponding predicates
-