edu.rice.cs.dynamicjava.interpreter
Class StatementChecker

java.lang.Object
  extended by koala.dynamicjava.tree.visitor.AbstractVisitor<TypeContext>
      extended by edu.rice.cs.dynamicjava.interpreter.StatementChecker
All Implemented Interfaces:
Lambda<Node,TypeContext>, Visitor<TypeContext>

public class StatementChecker
extends AbstractVisitor<TypeContext>
implements Lambda<Node,TypeContext>

Traverses the given statements and declarations, performing static checks along the way. A variety of properties (from NodeProperties) are set on certain nodes. In addition to those documented in ExpressionChecker, the following are set:

Throws an ExecutionError if an error is found.


Constructor Summary
StatementChecker(TypeContext ctx, Options options)
           
 
Method Summary
 TypeContext checkList(Iterable<? extends Node> l)
           
 TypeContext value(Node n)
           
 TypeContext visit(AssertStatement node)
          Visits an AssertStatement.
 TypeContext visit(BlockStatement node)
          Visits a BlockStatement
 TypeContext visit(BreakStatement node)
          Visits a BreakStatement
 TypeContext visit(ClassDeclaration node)
          Visits a ClassDeclaration
 TypeContext visit(ContinueStatement node)
          Visits a ContinueStatement
 TypeContext visit(DoStatement node)
          Visits a DoStatement.
 TypeContext visit(EmptyStatement node)
          Visits an EmptyStatement
 TypeContext visit(ExpressionStatement node)
          Visits an ExpressionStatement
 TypeContext visit(ForEachStatement node)
          Visits a ForEachStatement.
 TypeContext visit(ForStatement node)
          Visits a ForStatement.
 TypeContext visit(IfThenElseStatement node)
          Visits an IfThenElseStatement.
 TypeContext visit(IfThenStatement node)
          Visits an IfThenStatement.
 TypeContext visit(ImportDeclaration node)
          Creates a new context with the given import
 TypeContext visit(InterfaceDeclaration node)
          Visits a InterfaceDeclaration
 TypeContext visit(LabeledStatement node)
          Visits a LabeledStatement.
 TypeContext visit(MethodDeclaration node)
          Visits a MethodDeclaration.
 TypeContext visit(PackageDeclaration node)
          Creates a new context in the given package
 TypeContext visit(ReturnStatement node)
          Visits a ReturnStatement
 TypeContext visit(SwitchBlock node)
          Visits a SwitchBlock.
 TypeContext visit(SwitchStatement node)
          Visits a SwitchStatement.
 TypeContext visit(SynchronizedStatement node)
          Visits a SynchronizedStatement.
 TypeContext visit(ThrowStatement node)
          Visits a ThrowStatement.
 TypeContext visit(TryStatement node)
          Visits a TryStatement.
 TypeContext visit(VariableDeclaration node)
          Checks the declaration's initializer and creates a new context
 TypeContext visit(WhileStatement node)
          Visits a WhileStatement.
 
Methods inherited from class koala.dynamicjava.tree.visitor.AbstractVisitor
defaultCase, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatementChecker

public StatementChecker(TypeContext ctx,
                        Options options)
Method Detail

value

public TypeContext value(Node n)
Specified by:
value in interface Lambda<Node,TypeContext>

checkList

public TypeContext checkList(Iterable<? extends Node> l)

visit

public TypeContext visit(PackageDeclaration node)
Creates a new context in the given package

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ImportDeclaration node)
Creates a new context with the given import

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(VariableDeclaration node)
Checks the declaration's initializer and creates a new context

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ClassDeclaration node)
Description copied from class: AbstractVisitor
Visits a ClassDeclaration

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(InterfaceDeclaration node)
Description copied from class: AbstractVisitor
Visits a InterfaceDeclaration

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(MethodDeclaration node)
Visits a MethodDeclaration. Treated as a local function (class methods are handled by ClassMemberChecker).

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(WhileStatement node)
Visits a WhileStatement. JLS 14.12.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(DoStatement node)
Visits a DoStatement. JLS 14.13.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ForStatement node)
Visits a ForStatement. JLS 14.4.1.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ForEachStatement node)
Visits a ForEachStatement. JLS 14.14.2.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(IfThenStatement node)
Visits an IfThenStatement. JLS 14.9.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(IfThenElseStatement node)
Visits an IfThenElseStatement. JLS 14.9.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(SwitchStatement node)
Visits a SwitchStatement. JLS 14.11.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(SwitchBlock node)
Visits a SwitchBlock. JLS 14.11.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(LabeledStatement node)
Visits a LabeledStatement. JLS 14.7.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(TryStatement node)
Visits a TryStatement. JLS 14.20.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ThrowStatement node)
Visits a ThrowStatement. JLS 14.18.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ReturnStatement node)
Visits a ReturnStatement

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(AssertStatement node)
Visits an AssertStatement. JLS 14.10.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(SynchronizedStatement node)
Visits a SynchronizedStatement. JLS 14.19.

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(BlockStatement node)
Visits a BlockStatement

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(EmptyStatement node)
Description copied from class: AbstractVisitor
Visits an EmptyStatement

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(BreakStatement node)
Description copied from class: AbstractVisitor
Visits a BreakStatement

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ContinueStatement node)
Description copied from class: AbstractVisitor
Visits a ContinueStatement

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit

visit

public TypeContext visit(ExpressionStatement node)
Description copied from class: AbstractVisitor
Visits an ExpressionStatement

Specified by:
visit in interface Visitor<TypeContext>
Overrides:
visit in class AbstractVisitor<TypeContext>
Parameters:
node - the node to visit