diff sema/Visitor.d @ 11:642c6a998fd9

Support for while statements and fixed scope for if
author Anders Halager <halager@gmail.com>
date Fri, 18 Apr 2008 13:45:39 +0200
parents 2c5a8f4c254a
children e331e4e816e4
line wrap: on
line diff
--- a/sema/Visitor.d	Fri Apr 18 13:01:11 2008 +0200
+++ b/sema/Visitor.d	Fri Apr 18 13:45:39 2008 +0200
@@ -47,6 +47,8 @@
                 return visitExpStmt(cast(ExpStmt)stmt);
             case StmtType.If:
                 return visitIfStmt(cast(IfStmt)stmt);
+            case StmtType.While:
+                return visitWhileStmt(cast(WhileStmt)stmt);
             default:
                 throw new Exception("Unknown statement type");
         }
@@ -124,7 +126,20 @@
     StmtT visitIfStmt(IfStmt s)
     {
         visitExp(s.cond);
-        foreach (stmt; s.then)
+        foreach (stmt; s.then_body)
+            visitStmt(stmt);
+        foreach (stmt; s.else_body)
+            visitStmt(stmt);
+        static if (is(StmtT == void))
+            return;
+        else
+            return StmtT.init;
+    }
+
+    StmtT visitWhileStmt(WhileStmt s)
+    {
+        visitExp(s.cond);
+        foreach (stmt; s.stmts)
             visitStmt(stmt);
         static if (is(StmtT == void))
             return;