summaryrefslogtreecommitdiff
path: root/compiler/coreSyn
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2009-01-14 22:17:34 +0000
committerTim Chevalier <chevalier@alum.wellesley.edu>2009-01-14 22:17:34 +0000
commit7a410061004cedc1de8856b4f049a58c09ee6c38 (patch)
treecafb6a47de4d21cfc5e8d12daaa36299ee746cb4 /compiler/coreSyn
parentd95828709dd5e7e1d7e2e1eab8ef34a3a65e7d2f (diff)
downloadhaskell-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.lhs13
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