From: Tim Chevalier Date: Wed, 14 Jan 2009 22:17:34 +0000 (+0000) Subject: External Core: print out more precise dependency info X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=7a410061004cedc1de8856b4f049a58c09ee6c38 External Core: print out more precise dependency info Print out the same recursive/non-recursive binding groups that existed in internal Core in an External Core file, rather than dumping everything into one big recursive group. --- diff --git a/compiler/coreSyn/MkExternalCore.lhs b/compiler/coreSyn/MkExternalCore.lhs index ab1f12b..8273159 100644 --- a/compiler/coreSyn/MkExternalCore.lhs +++ b/compiler/coreSyn/MkExternalCore.lhs @@ -65,16 +65,9 @@ mkExternalCore :: CgGuts -> C.Module -- implicit in the data type declaration itself mkExternalCore (CgGuts {cg_module=this_mod, cg_tycons = tycons, cg_binds = binds}) - -- Note that we flatten binds at the top level: - -- every module is just a single recursive bag of declarations. - -- Rationale: since modules can be mutually recursive, - -- there's not much reason to preserve dependency info within a module. - = C.Module mname tdefs (case flattenBinds binds of - -- check for empty list so we don't create an - -- empty Rec group - [] -> [] - bs -> [(runCoreM (make_vdef True - (Rec bs)) this_mod)]) +{- Note that modules can be mutually recursive, but even so, we + print out dependency information within each module. -} + = C.Module mname tdefs (runCoreM (mapM (make_vdef True) binds) this_mod) where mname = make_mid this_mod tdefs = foldr collect_tdefs [] tycons