orc.ast.oil
Class UnguardedRecursionChecker

java.lang.Object
  extended by orc.ast.oil.Walker
      extended by orc.ast.oil.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(Expr expr)
           
 java.lang.Void visit(Call expr)
           
 java.lang.Void visit(Defs expr)
           
 java.lang.Void visit(Pull expr)
           
 java.lang.Void visit(Push expr)
           
 java.lang.Void visit(Semi expr)
           
 java.lang.Void visit(Var arg)
           
 java.lang.Void visit(WithLocation expr)
           
 
Methods inherited from class orc.ast.oil.Walker
enter, enter, 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, leave, leave, leaveScope, 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
 

Method Detail

check

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

visit

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

visit

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

visit

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

visit

public java.lang.Void visit(Semi 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(Var 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