X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;ds=sidebyside;f=Flatten.hs;h=598c8c6050df46cba753bb97351aff4abf4c559a;hb=3bd18744c55ac99fbc0fff05c74926e80be92ff9;hp=52316eca08a97dd07d0cfff45e555c3ab0c17aff;hpb=0b61849203b38c59a3878a1208d1de68943d6882;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git 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