Class ContextualClassCodeVisitor

java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.codehaus.groovy.macro.matcher.ContextualClassCodeVisitor
All Implemented Interfaces:
org.codehaus.groovy.ast.GroovyClassVisitor, org.codehaus.groovy.ast.GroovyCodeVisitor, org.codehaus.groovy.transform.ErrorCollecting

public abstract class ContextualClassCodeVisitor
extends org.codehaus.groovy.ast.ClassCodeVisitorSupport
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 Details

    • ContextualClassCodeVisitor

      public ContextualClassCodeVisitor()
  • Method Details

    • getTreeContext

      public TreeContext getTreeContext()
    • getLastContext

      public TreeContext getLastContext()
    • pushContext

      protected void pushContext​(TreeContext ctx)
    • popContext

      protected TreeContext popContext()
    • pushContext

      protected void pushContext​(org.codehaus.groovy.ast.ASTNode node)
    • visitClass

      public void visitClass​(org.codehaus.groovy.ast.ClassNode node)
      Specified by:
      visitClass in interface org.codehaus.groovy.ast.GroovyClassVisitor
      Overrides:
      visitClass in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitPackage

      public void visitPackage​(org.codehaus.groovy.ast.PackageNode node)
      Overrides:
      visitPackage in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitImports

      public void visitImports​(org.codehaus.groovy.ast.ModuleNode node)
      Overrides:
      visitImports in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitConstructorOrMethod

      protected void visitConstructorOrMethod​(org.codehaus.groovy.ast.MethodNode node, boolean isConstructor)
      Overrides:
      visitConstructorOrMethod in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitField

      public void visitField​(org.codehaus.groovy.ast.FieldNode node)
      Specified by:
      visitField in interface org.codehaus.groovy.ast.GroovyClassVisitor
      Overrides:
      visitField in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitProperty

      public void visitProperty​(org.codehaus.groovy.ast.PropertyNode node)
      Specified by:
      visitProperty in interface org.codehaus.groovy.ast.GroovyClassVisitor
      Overrides:
      visitProperty in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitMethodCallExpression

      public void visitMethodCallExpression​(org.codehaus.groovy.ast.expr.MethodCallExpression call)
      Specified by:
      visitMethodCallExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitMethodCallExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitStaticMethodCallExpression

      public void visitStaticMethodCallExpression​(org.codehaus.groovy.ast.expr.StaticMethodCallExpression call)
      Specified by:
      visitStaticMethodCallExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitStaticMethodCallExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitConstructorCallExpression

      public void visitConstructorCallExpression​(org.codehaus.groovy.ast.expr.ConstructorCallExpression call)
      Specified by:
      visitConstructorCallExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitConstructorCallExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitBinaryExpression

      public void visitBinaryExpression​(org.codehaus.groovy.ast.expr.BinaryExpression expression)
      Specified by:
      visitBinaryExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBinaryExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitTernaryExpression

      public void visitTernaryExpression​(org.codehaus.groovy.ast.expr.TernaryExpression expression)
      Specified by:
      visitTernaryExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitTernaryExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitShortTernaryExpression

      public void visitShortTernaryExpression​(org.codehaus.groovy.ast.expr.ElvisOperatorExpression expression)
      Specified by:
      visitShortTernaryExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitShortTernaryExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitPostfixExpression

      public void visitPostfixExpression​(org.codehaus.groovy.ast.expr.PostfixExpression expression)
      Specified by:
      visitPostfixExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitPostfixExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitPrefixExpression

      public void visitPrefixExpression​(org.codehaus.groovy.ast.expr.PrefixExpression expression)
      Specified by:
      visitPrefixExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitPrefixExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitBooleanExpression

      public void visitBooleanExpression​(org.codehaus.groovy.ast.expr.BooleanExpression expression)
      Specified by:
      visitBooleanExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBooleanExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitNotExpression

      public void visitNotExpression​(org.codehaus.groovy.ast.expr.NotExpression expression)
      Specified by:
      visitNotExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitNotExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitClosureExpression

      public void visitClosureExpression​(org.codehaus.groovy.ast.expr.ClosureExpression expression)
      Specified by:
      visitClosureExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitClosureExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitTupleExpression

      public void visitTupleExpression​(org.codehaus.groovy.ast.expr.TupleExpression expression)
      Specified by:
      visitTupleExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitTupleExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitListExpression

      public void visitListExpression​(org.codehaus.groovy.ast.expr.ListExpression expression)
      Specified by:
      visitListExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitListExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitArrayExpression

      public void visitArrayExpression​(org.codehaus.groovy.ast.expr.ArrayExpression expression)
      Specified by:
      visitArrayExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitArrayExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitMapExpression

      public void visitMapExpression​(org.codehaus.groovy.ast.expr.MapExpression expression)
      Specified by:
      visitMapExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitMapExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitMapEntryExpression

      public void visitMapEntryExpression​(org.codehaus.groovy.ast.expr.MapEntryExpression expression)
      Specified by:
      visitMapEntryExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitMapEntryExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitRangeExpression

      public void visitRangeExpression​(org.codehaus.groovy.ast.expr.RangeExpression expression)
      Specified by:
      visitRangeExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitRangeExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitSpreadExpression

      public void visitSpreadExpression​(org.codehaus.groovy.ast.expr.SpreadExpression expression)
      Specified by:
      visitSpreadExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitSpreadExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitSpreadMapExpression

      public void visitSpreadMapExpression​(org.codehaus.groovy.ast.expr.SpreadMapExpression expression)
      Specified by:
      visitSpreadMapExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitSpreadMapExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitMethodPointerExpression

      public void visitMethodPointerExpression​(org.codehaus.groovy.ast.expr.MethodPointerExpression expression)
      Specified by:
      visitMethodPointerExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitMethodPointerExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitUnaryMinusExpression

      public void visitUnaryMinusExpression​(org.codehaus.groovy.ast.expr.UnaryMinusExpression expression)
      Specified by:
      visitUnaryMinusExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitUnaryMinusExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitUnaryPlusExpression

      public void visitUnaryPlusExpression​(org.codehaus.groovy.ast.expr.UnaryPlusExpression expression)
      Specified by:
      visitUnaryPlusExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitUnaryPlusExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitBitwiseNegationExpression

      public void visitBitwiseNegationExpression​(org.codehaus.groovy.ast.expr.BitwiseNegationExpression expression)
      Specified by:
      visitBitwiseNegationExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBitwiseNegationExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitCastExpression

      public void visitCastExpression​(org.codehaus.groovy.ast.expr.CastExpression expression)
      Specified by:
      visitCastExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitCastExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitConstantExpression

      public void visitConstantExpression​(org.codehaus.groovy.ast.expr.ConstantExpression expression)
      Specified by:
      visitConstantExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitConstantExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitClassExpression

      public void visitClassExpression​(org.codehaus.groovy.ast.expr.ClassExpression expression)
      Specified by:
      visitClassExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitClassExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitVariableExpression

      public void visitVariableExpression​(org.codehaus.groovy.ast.expr.VariableExpression expression)
      Specified by:
      visitVariableExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitVariableExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitPropertyExpression

      public void visitPropertyExpression​(org.codehaus.groovy.ast.expr.PropertyExpression expression)
      Specified by:
      visitPropertyExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitPropertyExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitAttributeExpression

      public void visitAttributeExpression​(org.codehaus.groovy.ast.expr.AttributeExpression expression)
      Specified by:
      visitAttributeExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitAttributeExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitFieldExpression

      public void visitFieldExpression​(org.codehaus.groovy.ast.expr.FieldExpression expression)
      Specified by:
      visitFieldExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitFieldExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitGStringExpression

      public void visitGStringExpression​(org.codehaus.groovy.ast.expr.GStringExpression expression)
      Specified by:
      visitGStringExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitGStringExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitClosureListExpression

      public void visitClosureListExpression​(org.codehaus.groovy.ast.expr.ClosureListExpression cle)
      Specified by:
      visitClosureListExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitClosureListExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitBytecodeExpression

      public void visitBytecodeExpression​(org.codehaus.groovy.classgen.BytecodeExpression cle)
      Specified by:
      visitBytecodeExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBytecodeExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitAssertStatement

      public void visitAssertStatement​(org.codehaus.groovy.ast.stmt.AssertStatement statement)
      Specified by:
      visitAssertStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitAssertStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitBlockStatement

      public void visitBlockStatement​(org.codehaus.groovy.ast.stmt.BlockStatement block)
      Specified by:
      visitBlockStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBlockStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitBreakStatement

      public void visitBreakStatement​(org.codehaus.groovy.ast.stmt.BreakStatement statement)
      Specified by:
      visitBreakStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBreakStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitCaseStatement

      public void visitCaseStatement​(org.codehaus.groovy.ast.stmt.CaseStatement statement)
      Specified by:
      visitCaseStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitCaseStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitCatchStatement

      public void visitCatchStatement​(org.codehaus.groovy.ast.stmt.CatchStatement statement)
      Specified by:
      visitCatchStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitCatchStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitContinueStatement

      public void visitContinueStatement​(org.codehaus.groovy.ast.stmt.ContinueStatement statement)
      Specified by:
      visitContinueStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitContinueStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitDoWhileLoop

      public void visitDoWhileLoop​(org.codehaus.groovy.ast.stmt.DoWhileStatement loop)
      Specified by:
      visitDoWhileLoop in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitDoWhileLoop in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitExpressionStatement

      public void visitExpressionStatement​(org.codehaus.groovy.ast.stmt.ExpressionStatement statement)
      Specified by:
      visitExpressionStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitExpressionStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitForLoop

      public void visitForLoop​(org.codehaus.groovy.ast.stmt.ForStatement forLoop)
      Specified by:
      visitForLoop in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitForLoop in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitIfElse

      public void visitIfElse​(org.codehaus.groovy.ast.stmt.IfStatement ifElse)
      Specified by:
      visitIfElse in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitIfElse in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitReturnStatement

      public void visitReturnStatement​(org.codehaus.groovy.ast.stmt.ReturnStatement statement)
      Specified by:
      visitReturnStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitReturnStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitSwitch

      public void visitSwitch​(org.codehaus.groovy.ast.stmt.SwitchStatement statement)
      Specified by:
      visitSwitch in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitSwitch in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitSynchronizedStatement

      public void visitSynchronizedStatement​(org.codehaus.groovy.ast.stmt.SynchronizedStatement statement)
      Specified by:
      visitSynchronizedStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitSynchronizedStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitThrowStatement

      public void visitThrowStatement​(org.codehaus.groovy.ast.stmt.ThrowStatement statement)
      Specified by:
      visitThrowStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitThrowStatement in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitTryCatchFinally

      public void visitTryCatchFinally​(org.codehaus.groovy.ast.stmt.TryCatchStatement statement)
      Specified by:
      visitTryCatchFinally in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitTryCatchFinally in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitWhileLoop

      public void visitWhileLoop​(org.codehaus.groovy.ast.stmt.WhileStatement loop)
      Specified by:
      visitWhileLoop in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitWhileLoop in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitEmptyStatement

      public void visitEmptyStatement​(org.codehaus.groovy.ast.stmt.EmptyStatement statement)
      Specified by:
      visitEmptyStatement in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitEmptyStatement in class org.codehaus.groovy.ast.CodeVisitorSupport
    • getTreePath

      public List<TreeContext> getTreePath()
    • pathMatches

      public List<TreeContext> pathMatches​(List<ASTNodePredicate> predicates)
    • pathUpTo

      public List<TreeContext> pathUpTo​(ASTNodePredicate predicate)
    • pathUpTo

      public List<TreeContext> pathUpTo​(Class<org.codehaus.groovy.ast.ASTNode> node)
    • pathUpTo

      public List<TreeContext> pathUpTo​(Class<org.codehaus.groovy.ast.ASTNode> node, ASTNodePredicate predicate)
    • matchByClass

      public static List<ASTNodePredicate> matchByClass​(Class<org.codehaus.groovy.ast.ASTNode>... classes)