org.codehaus.groovy.transform.stc
Class StaticTypeCheckingVisitor

java.lang.Object
  extended by org.codehaus.groovy.ast.CodeVisitorSupport
      extended by org.codehaus.groovy.ast.ClassCodeVisitorSupport
          extended by org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor
All Implemented Interfaces:
GroovyClassVisitor, GroovyCodeVisitor

public class StaticTypeCheckingVisitor
extends ClassCodeVisitorSupport

The main class code visitor responsible for static type checking. It will perform various inspections like checking assignment types, type inference, ... Eventually, class nodes may be annotated with inferred type information.

Author:
Cedric Champeau, Jochen Theodorou

Constructor Summary
StaticTypeCheckingVisitor(SourceUnit source, ClassNode cn)
           
 
Method Summary
protected  void addStaticTypeError(String msg, ASTNode expr)
           
protected  SourceUnit getSourceUnit()
           
 void performSecondPass()
           
 void setMethodsToBeVisited(Set<MethodNode> methodsToBeVisited)
           
 void visitAttributeExpression(AttributeExpression expression)
           
 void visitBinaryExpression(BinaryExpression expression)
           
 void visitBitwiseNegationExpression(BitwiseNegationExpression expression)
           
 void visitCastExpression(CastExpression expression)
           
 void visitClass(ClassNode node)
          Visit a ClassNode.
 void visitClosureExpression(ClosureExpression expression)
           
 void visitConstructorCallExpression(ConstructorCallExpression call)
           
protected  void visitConstructorOrMethod(MethodNode node, boolean isConstructor)
           
 void visitForLoop(ForStatement forLoop)
           
 void visitIfElse(IfStatement ifElse)
           
 void visitMethod(MethodNode node)
          Visit a MethodNode.
 void visitMethodCallExpression(MethodCallExpression call)
           
 void visitPropertyExpression(PropertyExpression pexp)
           
 void visitReturnStatement(ReturnStatement statement)
           
 void visitTernaryExpression(TernaryExpression expression)
           
 void visitUnaryMinusExpression(UnaryMinusExpression expression)
           
 void visitUnaryPlusExpression(UnaryPlusExpression expression)
           
 void visitVariableExpression(VariableExpression vexp)
           
 void visitWhileLoop(WhileStatement loop)
           
 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitConstructor, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitImports, visitObjectInitializerStatements, visitPackage, visitProperty, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally
 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitBooleanExpression, visitBytecodeExpression, visitClassExpression, visitClosureListExpression, visitConstantExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTupleExpression
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StaticTypeCheckingVisitor

public StaticTypeCheckingVisitor(SourceUnit source,
                                 ClassNode cn)
Method Detail

getSourceUnit

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

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

visitVariableExpression

public void visitVariableExpression(VariableExpression vexp)
Specified by:
visitVariableExpression in interface GroovyCodeVisitor
Overrides:
visitVariableExpression in class CodeVisitorSupport

visitPropertyExpression

public void visitPropertyExpression(PropertyExpression pexp)
Specified by:
visitPropertyExpression in interface GroovyCodeVisitor
Overrides:
visitPropertyExpression in class CodeVisitorSupport

visitAttributeExpression

public void visitAttributeExpression(AttributeExpression expression)
Specified by:
visitAttributeExpression in interface GroovyCodeVisitor
Overrides:
visitAttributeExpression in class CodeVisitorSupport

visitBinaryExpression

public void visitBinaryExpression(BinaryExpression expression)
Specified by:
visitBinaryExpression in interface GroovyCodeVisitor
Overrides:
visitBinaryExpression in class CodeVisitorSupport

visitForLoop

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

visitWhileLoop

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

visitBitwiseNegationExpression

public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)
Specified by:
visitBitwiseNegationExpression in interface GroovyCodeVisitor
Overrides:
visitBitwiseNegationExpression in class CodeVisitorSupport

visitUnaryPlusExpression

public void visitUnaryPlusExpression(UnaryPlusExpression expression)
Specified by:
visitUnaryPlusExpression in interface GroovyCodeVisitor
Overrides:
visitUnaryPlusExpression in class CodeVisitorSupport

visitUnaryMinusExpression

public void visitUnaryMinusExpression(UnaryMinusExpression expression)
Specified by:
visitUnaryMinusExpression in interface GroovyCodeVisitor
Overrides:
visitUnaryMinusExpression in class CodeVisitorSupport

visitConstructorOrMethod

protected void visitConstructorOrMethod(MethodNode node,
                                        boolean isConstructor)
Overrides:
visitConstructorOrMethod in class ClassCodeVisitorSupport

visitReturnStatement

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

visitConstructorCallExpression

public void visitConstructorCallExpression(ConstructorCallExpression call)
Specified by:
visitConstructorCallExpression in interface GroovyCodeVisitor
Overrides:
visitConstructorCallExpression in class CodeVisitorSupport

visitClosureExpression

public void visitClosureExpression(ClosureExpression expression)
Specified by:
visitClosureExpression in interface GroovyCodeVisitor
Overrides:
visitClosureExpression in class CodeVisitorSupport

visitMethod

public void visitMethod(MethodNode node)
Description copied from interface: GroovyClassVisitor
Visit a MethodNode.

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

visitMethodCallExpression

public void visitMethodCallExpression(MethodCallExpression call)
Specified by:
visitMethodCallExpression in interface GroovyCodeVisitor
Overrides:
visitMethodCallExpression in class CodeVisitorSupport

visitIfElse

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

visitCastExpression

public void visitCastExpression(CastExpression expression)
Specified by:
visitCastExpression in interface GroovyCodeVisitor
Overrides:
visitCastExpression in class CodeVisitorSupport

visitTernaryExpression

public void visitTernaryExpression(TernaryExpression expression)
Specified by:
visitTernaryExpression in interface GroovyCodeVisitor
Overrides:
visitTernaryExpression in class CodeVisitorSupport

addStaticTypeError

protected void addStaticTypeError(String msg,
                                  ASTNode expr)

setMethodsToBeVisited

public void setMethodsToBeVisited(Set<MethodNode> methodsToBeVisited)

performSecondPass

public void performSecondPass()

Copyright © 2003-2011 The Codehaus. All rights reserved.