org.codehaus.groovy.control
Class ResolveVisitor

java.lang.Object
  extended by org.codehaus.groovy.ast.CodeVisitorSupport
      extended by org.codehaus.groovy.ast.ClassCodeVisitorSupport
          extended by org.codehaus.groovy.control.ResolveVisitor
All Implemented Interfaces:
ExpressionTransformer, GroovyClassVisitor, GroovyCodeVisitor

public class ResolveVisitor
extends ClassCodeVisitorSupport
implements ExpressionTransformer

Visitor to resolve Types and convert VariableExpression to ClassExpressions if needed. The ResolveVisitor will try to find the Class for a ClassExpression and prints an error if it fails to do so. Constructions like C[], foo as C, (C) foo will force creation of a ClasssExpression for C Note: the method to start the resolving is startResolving(ClassNode, SourceUnit).

Author:
Jochen Theodorou

Constructor Summary
ResolveVisitor(CompilationUnit cu)
           
 
Method Summary
protected  SourceUnit getSourceUnit()
           
 void startResolving(ClassNode node, SourceUnit source)
           
 Expression transform(Expression exp)
          Transforms the given expression into another expression
protected  Expression transformBinaryExpression(BinaryExpression be)
           
protected  Expression transformClosureExpression(ClosureExpression ce)
           
protected  Expression transformConstructorCallExpression(ConstructorCallExpression cce)
           
protected  Expression transformDeclarationExpression(DeclarationExpression de)
           
protected  Expression transformMethodCallExpression(MethodCallExpression mce)
           
protected  Expression transformPropertyExpression(PropertyExpression pe)
           
protected  Expression transformVariableExpression(VariableExpression ve)
           
 void visitAnnotations(AnnotatedNode node)
           
 void visitAssertStatement(AssertStatement as)
           
 void visitBlockStatement(BlockStatement block)
           
 void visitCaseStatement(CaseStatement statement)
           
 void visitCatchStatement(CatchStatement cs)
           
 void visitClass(ClassNode node)
           
 void visitConstructor(ConstructorNode node)
           
 void visitDoWhileLoop(DoWhileStatement loop)
           
 void visitExpressionStatement(ExpressionStatement es)
           
 void visitField(FieldNode node)
           
 void visitForLoop(ForStatement forLoop)
           
 void visitIfElse(IfStatement ifElse)
           
 void visitMethod(MethodNode node)
           
 void visitProperty(PropertyNode node)
           
 void visitReturnStatement(ReturnStatement statement)
           
 void visitSwitch(SwitchStatement statement)
           
 void visitSynchronizedStatement(SynchronizedStatement sync)
           
 void visitThrowStatement(ThrowStatement ts)
           
 void visitWhileLoop(WhileStatement loop)
           
 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitBreakStatement, visitClassCodeContainer, visitConstructorOrMethod, visitContinueStatement, visitStatement, visitTryCatchFinally
 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegExpression, visitBooleanExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitConstantExpression, visitConstructorCallExpression, visitDeclarationExpression, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNegationExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitRegexExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitVariableExpression
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResolveVisitor

public ResolveVisitor(CompilationUnit cu)
Method Detail

startResolving

public void startResolving(ClassNode node,
                           SourceUnit source)

visitConstructor

public void visitConstructor(ConstructorNode node)
Specified by:
visitConstructor in interface GroovyClassVisitor
Overrides:
visitConstructor in class ClassCodeVisitorSupport

visitSwitch

public void visitSwitch(SwitchStatement statement)
Specified by:
visitSwitch in interface GroovyCodeVisitor
Overrides:
visitSwitch in class ClassCodeVisitorSupport

visitMethod

public void visitMethod(MethodNode node)
Specified by:
visitMethod in interface GroovyClassVisitor
Overrides:
visitMethod in class ClassCodeVisitorSupport

visitField

public void visitField(FieldNode node)
Specified by:
visitField in interface GroovyClassVisitor
Overrides:
visitField in class ClassCodeVisitorSupport

visitProperty

public void visitProperty(PropertyNode node)
Specified by:
visitProperty in interface GroovyClassVisitor
Overrides:
visitProperty in class ClassCodeVisitorSupport

visitIfElse

public void visitIfElse(IfStatement ifElse)
Specified by:
visitIfElse in interface GroovyCodeVisitor
Overrides:
visitIfElse in class ClassCodeVisitorSupport

transform

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

Specified by:
transform in interface ExpressionTransformer

transformPropertyExpression

protected Expression transformPropertyExpression(PropertyExpression pe)

transformVariableExpression

protected Expression transformVariableExpression(VariableExpression ve)

transformBinaryExpression

protected Expression transformBinaryExpression(BinaryExpression be)

transformClosureExpression

protected Expression transformClosureExpression(ClosureExpression ce)

transformConstructorCallExpression

protected Expression transformConstructorCallExpression(ConstructorCallExpression cce)

transformMethodCallExpression

protected Expression transformMethodCallExpression(MethodCallExpression mce)

transformDeclarationExpression

protected Expression transformDeclarationExpression(DeclarationExpression de)

visitAnnotations

public void visitAnnotations(AnnotatedNode node)
Overrides:
visitAnnotations in class ClassCodeVisitorSupport

visitClass

public void visitClass(ClassNode node)
Specified by:
visitClass in interface GroovyClassVisitor
Overrides:
visitClass in class ClassCodeVisitorSupport

visitReturnStatement

public void visitReturnStatement(ReturnStatement statement)
Specified by:
visitReturnStatement in interface GroovyCodeVisitor
Overrides:
visitReturnStatement in class ClassCodeVisitorSupport

visitAssertStatement

public void visitAssertStatement(AssertStatement as)
Specified by:
visitAssertStatement in interface GroovyCodeVisitor
Overrides:
visitAssertStatement in class ClassCodeVisitorSupport

visitCaseStatement

public void visitCaseStatement(CaseStatement statement)
Specified by:
visitCaseStatement in interface GroovyCodeVisitor
Overrides:
visitCaseStatement in class ClassCodeVisitorSupport

visitCatchStatement

public void visitCatchStatement(CatchStatement cs)
Specified by:
visitCatchStatement in interface GroovyCodeVisitor
Overrides:
visitCatchStatement in class ClassCodeVisitorSupport

visitDoWhileLoop

public void visitDoWhileLoop(DoWhileStatement loop)
Specified by:
visitDoWhileLoop in interface GroovyCodeVisitor
Overrides:
visitDoWhileLoop in class ClassCodeVisitorSupport

visitForLoop

public void visitForLoop(ForStatement forLoop)
Specified by:
visitForLoop in interface GroovyCodeVisitor
Overrides:
visitForLoop in class ClassCodeVisitorSupport

visitSynchronizedStatement

public void visitSynchronizedStatement(SynchronizedStatement sync)
Specified by:
visitSynchronizedStatement in interface GroovyCodeVisitor
Overrides:
visitSynchronizedStatement in class ClassCodeVisitorSupport

visitThrowStatement

public void visitThrowStatement(ThrowStatement ts)
Specified by:
visitThrowStatement in interface GroovyCodeVisitor
Overrides:
visitThrowStatement in class ClassCodeVisitorSupport

visitWhileLoop

public void visitWhileLoop(WhileStatement loop)
Specified by:
visitWhileLoop in interface GroovyCodeVisitor
Overrides:
visitWhileLoop in class ClassCodeVisitorSupport

visitExpressionStatement

public void visitExpressionStatement(ExpressionStatement es)
Specified by:
visitExpressionStatement in interface GroovyCodeVisitor
Overrides:
visitExpressionStatement in class ClassCodeVisitorSupport

visitBlockStatement

public void visitBlockStatement(BlockStatement block)
Specified by:
visitBlockStatement in interface GroovyCodeVisitor
Overrides:
visitBlockStatement in class ClassCodeVisitorSupport

getSourceUnit

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


Copyright © 2003-2009 The Codehaus. All Rights Reserved.