[project @ 2001-08-04 06:11:24 by ken]
[ghc-hetmet.git] / ghc / compiler / DEPEND-NOTES
1                 Notes on module dependencies
2                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
4 The Name/Var/Type group is a bit complicated. Here's the deal
5 Things in brackets are what the module *uses*.
6 A 'loop' indicates a use from a module compiled later
7
8         Name, PrimRep 
9 then
10         PrelNames
11 then
12         Var (Name, loop IdInfo.IdInfo, 
13              loop Type.Type, loop Type.Kind)
14 then
15         VarEnv, VarSet, ThinAir
16 then
17         Class (loop TyCon.TyCon, loop Type.Type)
18 then
19         TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon, loop Generics.GenInfo)
20 then
21         Type (loop DataCon.DataCon, loop Subst.substTy)
22 then
23         FieldLabel( Type), TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
24 then
25         Unify, PprType (PprEnv)
26 then
27         Literal (TysPrim, PprType), DataCon (PprType)
28 then
29         TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId, loop Generics.mkGenInfo)
30 then
31         PrimOp (PprType, TysWiredIn)
32 then
33         CoreSyn
34 then
35         IdInfo (CoreSyn.Unfolding, CoreSyn.CoreRules)
36 then
37         Id (lots from IdInfo)
38 then
39         CoreFVs, PprCore
40 then
41         CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars,
42                    CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate)
43 then    
44         OccurAnal (CoreUtils.exprIsTrivial)
45 then
46         CoreUnfold (OccurAnal.occurAnalyseGlobalExpr)
47 then
48         Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding), Generics (mkTopUnfolding)
49 then
50         MkId (CoreUnfold.mkUnfolding, Subst)
51 then
52         PrelInfo (MkId)
53