From: Matthijs Kooijman Date: Mon, 9 Feb 2009 15:00:01 +0000 (+0100) Subject: Make flattenExpr return signal definitions for arguments. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=3bd18744c55ac99fbc0fff05c74926e80be92ff9;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git Make flattenExpr return signal definitions for arguments. This makes the "wire" example be flattened properly. --- 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