diff options
author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2009-01-14 22:17:34 +0000 |
---|---|---|
committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2009-01-14 22:17:34 +0000 |
commit | 7a410061004cedc1de8856b4f049a58c09ee6c38 (patch) | |
tree | cafb6a47de4d21cfc5e8d12daaa36299ee746cb4 /compiler/coreSyn | |
parent | d95828709dd5e7e1d7e2e1eab8ef34a3a65e7d2f (diff) | |
download | haskell-7a410061004cedc1de8856b4f049a58c09ee6c38.tar.gz |
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.
Diffstat (limited to 'compiler/coreSyn')
-rw-r--r-- | compiler/coreSyn/MkExternalCore.lhs | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/compiler/coreSyn/MkExternalCore.lhs b/compiler/coreSyn/MkExternalCore.lhs index ab1f12be25..82731597cd 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 |