Class VariableExpressionReplacer
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.transform.tailrec.VariableExpressionReplacer
- All Implemented Interfaces:
GroovyCodeVisitor
Tool for replacing VariableExpression instances in an AST by other VariableExpression instances.
Regardless of a real change taking place in nested expressions, all considered expression (trees) will be replaced.
This could be optimized to accelerate compilation.
Within @TailRecursive it is used - to swap the access of method args with the access to iteration variables - to swap the access of iteration variables with the access of temp vars
-
Constructor Summary
ConstructorsConstructorDescriptionVariableExpressionReplacer(Closure<Boolean> when, Closure<VariableExpression> replaceWith) -
Method Summary
Modifier and TypeMethodDescriptiongetWhen()voidvoidsetReplaceWith(Closure<VariableExpression> replaceWith) voidvoidvisitAssertStatement(AssertStatement statement) voidvisitBinaryExpression(BinaryExpression expression) It's the only Expression type in which replacing is considered.voidvisitCaseStatement(CaseStatement statement) voidvoidvisitExpressionStatement(ExpressionStatement statement) voidvisitForLoop(ForStatement forLoop) voidvisitIfElse(IfStatement ifElse) voidvisitReturnStatement(ReturnStatement statement) voidvisitSwitch(SwitchStatement statement) voidvisitSynchronizedStatement(SynchronizedStatement statement) voidvisitThrowStatement(ThrowStatement statement) voidvisitWhileLoop(WhileStatement loop) Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCastExpression, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpressionMethods 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
-
VariableExpressionReplacer
-
-
Method Details
-
visitReturnStatement
- Specified by:
visitReturnStatementin interfaceGroovyCodeVisitor- Overrides:
visitReturnStatementin classCodeVisitorSupport
-
visitIfElse
- Specified by:
visitIfElsein interfaceGroovyCodeVisitor- Overrides:
visitIfElsein classCodeVisitorSupport
-
visitForLoop
- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Overrides:
visitForLoopin classCodeVisitorSupport
-
visitBinaryExpression
It's the only Expression type in which replacing is considered. That's an abuse of the class, but I couldn't think of a better way.- Specified by:
visitBinaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBinaryExpressionin classCodeVisitorSupport
-
visitWhileLoop
- Specified by:
visitWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitWhileLoopin classCodeVisitorSupport
-
visitDoWhileLoop
- Specified by:
visitDoWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitDoWhileLoopin classCodeVisitorSupport
-
visitSwitch
- Specified by:
visitSwitchin interfaceGroovyCodeVisitor- Overrides:
visitSwitchin classCodeVisitorSupport
-
visitCaseStatement
- Specified by:
visitCaseStatementin interfaceGroovyCodeVisitor- Overrides:
visitCaseStatementin classCodeVisitorSupport
-
visitExpressionStatement
- Specified by:
visitExpressionStatementin interfaceGroovyCodeVisitor- Overrides:
visitExpressionStatementin classCodeVisitorSupport
-
visitThrowStatement
- Specified by:
visitThrowStatementin interfaceGroovyCodeVisitor- Overrides:
visitThrowStatementin classCodeVisitorSupport
-
visitAssertStatement
- Specified by:
visitAssertStatementin interfaceGroovyCodeVisitor- Overrides:
visitAssertStatementin classCodeVisitorSupport
-
visitSynchronizedStatement
- Specified by:
visitSynchronizedStatementin interfaceGroovyCodeVisitor- Overrides:
visitSynchronizedStatementin classCodeVisitorSupport
-
replaceIn
-
getWhen
-
setWhen
-
getReplaceWith
-
setReplaceWith
-