Learn flattenExpr about Var expressions.
[matthijs/master-project/cλash.git] / 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 [])