org.codehaus.groovy.transform.sc.transformers
Class StaticCompilationTransformer

java.lang.Object
  extended by org.codehaus.groovy.ast.CodeVisitorSupport
      extended by org.codehaus.groovy.ast.ClassCodeVisitorSupport
          extended by org.codehaus.groovy.ast.ClassCodeExpressionTransformer
              extended by org.codehaus.groovy.transform.sc.transformers.StaticCompilationTransformer
All Implemented Interfaces:
ExpressionTransformer, GroovyClassVisitor, GroovyCodeVisitor

public class StaticCompilationTransformer
extends ClassCodeExpressionTransformer

Some expressions use symbols as aliases to method calls (<<, +=, ...). In static compilation, if such a method call is found, we transform the original binary expression into a method call expression so that the call gets statically compiled.


Field Summary
protected static ClassNode BYTECODE_ADAPTER_CLASS
           
protected static java.util.Map<java.lang.Integer,MethodNode> BYTECODE_BINARY_ADAPTERS
           
 
Constructor Summary
StaticCompilationTransformer(SourceUnit unit)
           
 
Method Summary
 ClassNode getClassNode()
           
protected  SourceUnit getSourceUnit()
           
 StaticTypesTypeChooser getTypeChooser()
           
 Expression transform(Expression expr)
          Transforms the given expression into another expression
 void visitClass(ClassNode node)
          Visit a ClassNode.
 void visitClassCodeContainer(Statement code)
           
 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeExpressionTransformer
visitAnnotations, visitAssertStatement, visitCaseStatement, visitConstructorOrMethod, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitProperty, visitReturnStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitWhileLoop
 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitBlockStatement, visitBreakStatement, visitCatchStatement, visitConstructor, visitContinueStatement, visitDeclarationExpression, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitStatement, visitTryCatchFinally
 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BYTECODE_ADAPTER_CLASS

protected static final ClassNode BYTECODE_ADAPTER_CLASS

BYTECODE_BINARY_ADAPTERS

protected static final java.util.Map<java.lang.Integer,MethodNode> BYTECODE_BINARY_ADAPTERS
Constructor Detail

StaticCompilationTransformer

public StaticCompilationTransformer(SourceUnit unit)
Method Detail

getSourceUnit

protected SourceUnit getSourceUnit()
Specified by:
getSourceUnit in class ClassCodeVisitorSupport

getTypeChooser

public StaticTypesTypeChooser getTypeChooser()

getClassNode

public ClassNode getClassNode()

visitClassCodeContainer

public void visitClassCodeContainer(Statement code)
Overrides:
visitClassCodeContainer in class ClassCodeVisitorSupport

transform

public Expression transform(Expression expr)
Description copied from interface: ExpressionTransformer
Transforms the given expression into another expression

Specified by:
transform in interface ExpressionTransformer
Overrides:
transform in class ClassCodeExpressionTransformer

visitClass

public void visitClass(ClassNode node)
Description copied from interface: GroovyClassVisitor
Visit a ClassNode.

Specified by:
visitClass in interface GroovyClassVisitor
Overrides:
visitClass in class ClassCodeVisitorSupport