orc.ast.oil.visitor
Class UnguardedRecursionChecker

java.lang.Object
  extended by orc.ast.oil.visitor.Walker
      extended by orc.ast.oil.visitor.UnguardedRecursionChecker
All Implemented Interfaces:
Visitor<java.lang.Void>

public class UnguardedRecursionChecker
extends Walker

Check for unguarded recursion in function definitions. TODO: check for unguarded mutual recursion as well.

Author:
quark

Method Summary
static void check(Expression expr)
           
 java.lang.Void visit(Call expr)
           
 java.lang.Void visit(Catch catchExpr)
           
 java.lang.Void visit(DeclareDefs expr)
           
 java.lang.Void visit(Otherwise expr)
           
 java.lang.Void visit(Pruning expr)
           
 java.lang.Void visit(Sequential expr)
           
 java.lang.Void visit(Throw throwExpr)
           
 java.lang.Void visit(Variable arg)
           
 java.lang.Void visit(WithLocation expr)
           
 
Methods inherited from class orc.ast.oil.visitor.Walker
enter, enter, enter, enter, enter, enter, enter, enter, enter, enter, enter, enter, enter, enter, enter, enterScope, leave, leave, leave, leave, leave, leave, leave, leave, leave, leave, leave, leave, leave, leave, leave, leaveScope, 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
 

Method Detail

check

public static void check(Expression expr)
                  throws CompilationException
Throws:
CompilationException

visit

public java.lang.Void visit(DeclareDefs expr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Pruning expr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Sequential expr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Otherwise expr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Call expr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Variable arg)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(WithLocation expr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Throw throwExpr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker

visit

public java.lang.Void visit(Catch catchExpr)
Specified by:
visit in interface Visitor<java.lang.Void>
Overrides:
visit in class Walker