org.codehaus.groovy.transform
Class NewifyASTTransformation

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.NewifyASTTransformation
All Implemented Interfaces:
ExpressionTransformer, GroovyClassVisitor, GroovyCodeVisitor, ASTTransformation

public class NewifyASTTransformation
extends ClassCodeExpressionTransformer
implements ASTTransformation

Handles generation of code for the @Newify annotation.

Author:
Paul King

Field Summary
private  boolean auto
           
private  ListExpression classesToNewify
           
private static java.lang.String MY_NAME
           
private static ClassNode MY_TYPE
           
private  SourceUnit source
           
 
Constructor Summary
NewifyASTTransformation()
           
 
Method Summary
private  void checkAutoClash(boolean autoFlag)
           
private  void checkClassLevelClashes(ListExpression list)
           
private  void checkDuplicateNameClashes(ListExpression list)
           
private  boolean determineAutoFlag(Expression autoExpr)
           
private  ListExpression determineClassesToNewify(Expression expr)
           
private  boolean findClassWithMatchingBasename(java.lang.String nameWithoutPackage)
           
private  ClassNode findMatchingCandidateClass(MethodCallExpression mce)
           
protected  SourceUnit getSourceUnit()
           
private  void internalError(java.lang.String message)
           
private  boolean isNewifyCandidate(MethodCallExpression mce)
           
private  boolean isNewMethodStyle(MethodCallExpression mce)
           
private  void newifyClass(AnnotatedNode parent, boolean autoFlag, ListExpression list)
           
private  void newifyMethodOrField(AnnotatedNode parent, boolean autoFlag, ListExpression list)
           
 Expression transform(Expression expr)
          Transforms the given expression into another expression
private  Expression transformMethodCall(MethodCallExpression mce, Expression args)
           
 void visit(ASTNode[] nodes, SourceUnit source)
          The call made when the compiler encounters an AST Transformation Annotation
 
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, visitClass, visitClassCodeContainer, visitConstructor, visitContinueStatement, visitMethod, visitStatement, visitTryCatchFinally
 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitDeclarationExpression, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitRegexExpression, 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

MY_TYPE

private static final ClassNode MY_TYPE

MY_NAME

private static final java.lang.String MY_NAME

source

private SourceUnit source

classesToNewify

private ListExpression classesToNewify

auto

private boolean auto
Constructor Detail

NewifyASTTransformation

public NewifyASTTransformation()
Method Detail

visit

public void visit(ASTNode[] nodes,
                  SourceUnit source)
Description copied from interface: ASTTransformation
The call made when the compiler encounters an AST Transformation Annotation

Specified by:
visit in interface ASTTransformation
Parameters:
nodes - The ASTnodes when the call was triggered
source - The source unit being compiled

determineAutoFlag

private boolean determineAutoFlag(Expression autoExpr)

determineClassesToNewify

private ListExpression determineClassesToNewify(Expression expr)

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

newifyClass

private void newifyClass(AnnotatedNode parent,
                         boolean autoFlag,
                         ListExpression list)

newifyMethodOrField

private void newifyMethodOrField(AnnotatedNode parent,
                                 boolean autoFlag,
                                 ListExpression list)

checkDuplicateNameClashes

private void checkDuplicateNameClashes(ListExpression list)

checkAutoClash

private void checkAutoClash(boolean autoFlag)

checkClassLevelClashes

private void checkClassLevelClashes(ListExpression list)

findClassWithMatchingBasename

private boolean findClassWithMatchingBasename(java.lang.String nameWithoutPackage)

isNewifyCandidate

private boolean isNewifyCandidate(MethodCallExpression mce)

isNewMethodStyle

private boolean isNewMethodStyle(MethodCallExpression mce)

transformMethodCall

private Expression transformMethodCall(MethodCallExpression mce,
                                       Expression args)

findMatchingCandidateClass

private ClassNode findMatchingCandidateClass(MethodCallExpression mce)

internalError

private void internalError(java.lang.String message)

getSourceUnit

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


Copyright © ${year} The Codehaus. All Rights Reserved.