Make typeInference pass error outwards
authorJoachim Breitner <mail@joachim-breitner.de>
Thu, 16 Sep 2010 14:31:03 +0000 (14:31 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Thu, 16 Sep 2010 14:31:03 +0000 (14:31 +0000)
Type.hs

diff --git a/Type.hs b/Type.hs
index 8d397b9..c1bd3f2 100644 (file)
--- a/Type.hs
+++ b/Type.hs
@@ -46,16 +46,13 @@ initTMap =
 
 
 typeInference (AST decls) = 
-    let mAst = do { (decls',_,_) <- 
-                        foldr (\decls m -> 
-                                   do (rdecls, tMap,  icount)  <- m
-                                      (decls', tMap', icount') <- inferenceStep decls tMap icount
-                                      return $ (decls'++rdecls, tMap', icount')
-                              ) (return ([],initTMap,initIcount)) declss
-                  ; return $ AST decls' } 
-    in case mAst of 
-         Left s  -> error s 
-         Right a ->  a 
+    do { (decls',_,_) <- 
+             foldr (\decls m -> 
+                        do (rdecls, tMap,  icount)  <- m
+                           (decls', tMap', icount') <- inferenceStep decls tMap icount
+                           return $ (decls'++rdecls, tMap', icount')
+                   ) (return ([],initTMap,initIcount)) declss
+       ; return $ AST decls' } 
     where
       initIcount = 100 -- FIXME 
       declss =