Top Description Fields Constructors Methods
org.codehaus.groovy.transform.trait

pack-priv Class TraitReceiverTransformer

extends ClassCodeExpressionTransformer
Class Inheritance
Imports
org.codehaus.groovy.ast.ASTNode, .ClassCodeExpressionTransformer, .ClassHelper, .ClassNode, .DynamicVariable, .FieldNode, .GenericsType, .MethodNode, .PropertyNode, .Variable, org.codehaus.groovy.ast.expr.ArgumentListExpression, .BinaryExpression, .ClosureExpression, .ConstantExpression, .DeclarationExpression, .Expression, .FieldExpression, .MethodCallExpression, .PropertyExpression, .StaticMethodCallExpression, .TupleExpression, .VariableExpression, org.codehaus.groovy.control.SourceUnit, org.codehaus.groovy.syntax.SyntaxException, .Token, .Types, java.lang.reflect.Modifier, java.util.Collection

This expression transformer is used internally by the trait AST transformation to change the receiver of a message on "this" into a static method call on the trait helper class.

In a nutshell, code like the following method definition in a trait: void foo() { this.bar() } is transformed into: void foo() { TraitHelper$bar(this) }

Since
2.3.0

Field Summary

Modifier and TypeField and Description
private final ClassNode
private boolean
private final Collection<String>
private final ClassNode
private final ClassNode
private final SourceUnit
private final VariableExpression

Constructor Summary

AccessConstructor and Description
public
TraitReceiverTransformer(final VariableExpression thisObject, final SourceUnit unit, final ClassNode traitClass, final ClassNode traitHelperClass, final ClassNode fieldHelper, final Collection<String> knownFields)

Method Summary

Modifier and TypeMethod and Description
private Expression
private ArgumentListExpression
createArgumentList(final Expression self, final Expression arguments)

private Expression
protected SourceUnit
private static void
markDynamicCall(final MethodCallExpression mce, final FieldNode fn, final boolean isStatic)

private void
public Expression
private Expression
private Expression
transformFieldReference(final Expression exp, final FieldNode fn, final boolean isStatic)

private Expression
private Expression
private static FieldNode
tryGetFieldNode(final ClassNode weavedType, final String fieldName)

Inherited from org.codehaus.groovy.ast.ClassCodeExpressionTransformer:
setSourcePositionvisitAnnotationvisitAssertStatementvisitCaseStatementvisitConstructorOrMethodvisitDoWhileLoopvisitExpressionStatementvisitFieldvisitForLoopvisitIfElsevisitPropertyvisitReturnStatementvisitSwitchvisitSynchronizedStatementvisitThrowStatementvisitWhileLoop

Field Detail

fieldHelperback to summary
private final ClassNode fieldHelper
inClosureback to summary
private boolean inClosure
knownFieldsback to summary
private final Collection<String> knownFields
traitClassback to summary
private final ClassNode traitClass
traitHelperClassback to summary
private final ClassNode traitHelperClass
unitback to summary
private final SourceUnit unit
weavedback to summary
private final VariableExpression weaved

Constructor Detail

TraitReceiverTransformerback to summary
public TraitReceiverTransformer(final VariableExpression thisObject, final SourceUnit unit, final ClassNode traitClass, final ClassNode traitHelperClass, final ClassNode fieldHelper, final Collection<String> knownFields)

Method Detail

asClassback to summary
private Expression asClass(final Expression e)
createArgumentListback to summary
private ArgumentListExpression createArgumentList(final Expression self, final Expression arguments)
createFieldHelperReceiverback to summary
private Expression createFieldHelperReceiver()
getSourceUnitback to summary
protected SourceUnit getSourceUnit()

Implements abstract org.codehaus.groovy.ast.ClassCodeVisitorSupport.getSourceUnit.

Annotations
@Override
markDynamicCallback to summary
private static void markDynamicCall(final MethodCallExpression mce, final FieldNode fn, final boolean isStatic)
throwSuperErrorback to summary
private void throwSuperError(final ASTNode node)
transformback to summary
public Expression transform(final Expression exp)

Overrides org.codehaus.groovy.ast.ClassCodeExpressionTransformer.transform.

Implements org.codehaus.groovy.ast.expr.ExpressionTransformer.transform.

Doc from org.codehaus.groovy.ast.expr.ExpressionTransformer.transform.

Transforms the given expression into another expression

Annotations
@Override
transformBinaryExpressionback to summary
private Expression transformBinaryExpression(final BinaryExpression exp, final ClassNode weavedType)
transformFieldReferenceback to summary
private Expression transformFieldReference(final Expression exp, final FieldNode fn, final boolean isStatic)
transformMethodCallOnThisback to summary
private Expression transformMethodCallOnThis(final MethodCallExpression call)
transformSuperMethodCallback to summary
private Expression transformSuperMethodCall(final MethodCallExpression call)
tryGetFieldNodeback to summary
private static FieldNode tryGetFieldNode(final ClassNode weavedType, final String fieldName)