From 3bd18744c55ac99fbc0fff05c74926e80be92ff9 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Mon, 9 Feb 2009 16:00:01 +0100 Subject: [PATCH] Make flattenExpr return signal definitions for arguments. This makes the "wire" example be flattened properly. --- Flatten.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Flatten.hs b/Flatten.hs index 52316ec..598c8c6 100644 --- a/Flatten.hs +++ b/Flatten.hs @@ -44,6 +44,10 @@ data FlatFunction = FlatFunction { type SignalUseMap = HsValueMap SignalUse type SignalDefMap = HsValueMap SignalDef +useMapToDefMap :: SignalUseMap -> SignalDefMap +useMapToDefMap (Single (SignalUse u)) = Single (SignalDef u) +useMapToDefMap (Tuple uses) = Tuple (map useMapToDefMap uses) + type SignalId = Int data SignalUse = SignalUse { sigUseId :: SignalId @@ -167,7 +171,8 @@ flattenExpr binds lam@(Lam b expr) = do -- Create signal names for the binder defs <- genSignalUses arg_ty let binds' = (b, Left defs):binds - flattenExpr binds' expr + (args, res) <- flattenExpr binds' expr + return ((useMapToDefMap defs) : args, res) flattenExpr binds (Var id) = case bind of -- 2.30.2