Learn flattenExpr about Var expressions.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 9 Feb 2009 14:53:10 +0000 (15:53 +0100)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 9 Feb 2009 14:53:10 +0000 (15:53 +0100)
Flatten.hs

index f3057e86399a1a2d895730719dc9954b87d17e87..52316eca08a97dd07d0cfff45e555c3ab0c17aff 100644 (file)
@@ -1,7 +1,9 @@
 module Flatten where
 import CoreSyn
 import qualified Type
+import qualified Name
 import qualified TyCon
+import qualified Maybe
 import qualified CoreUtils
 import qualified Control.Monad.State as State
 
@@ -167,6 +169,15 @@ flattenExpr binds lam@(Lam b expr) = do
   let binds' = (b, Left defs):binds
   flattenExpr binds' expr
 
+flattenExpr binds (Var id) =
+  case bind of
+    Left sig_use -> return ([], sig_use)
+    Right _ -> error "Higher order functions not supported."
+  where
+    bind = Maybe.fromMaybe
+      (error $ "Argument " ++ Name.getOccString id ++ "is unknown")
+      (lookup id binds)
+
 flattenExpr _ _ = do
   return ([], Tuple [])