[project @ 2000-01-04 17:40:46 by simonpj]
[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, FieldLabel (loop Type.Type)
9 then
10         Var (loop Const.Con, loop IdInfo.IdInfo, 
11              loop Type.GenType, loop Type.Kind)
12 then
13         VarEnv, VarSet, ThinAir
14 then
15         Class (loop TyCon.TyCon, loop Type.Type, loop InstEnv.InstEnv)
16 then
17         TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon)
18 then
19         Type (loop DataCon.DataCon, loop Subst.substTy)
20 then
21         DataCon, TysPrim, Unify, PprType
22 then
23         InstEnv (Unify)
24 then
25         IdInfo (loop CoreRules.CoreRules) 
26         TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId)
27 then
28         PrimOp (PprType, TysWiredIn, IdInfo.StrictnessInfo)
29 then
30         Const (PrimOp.PrimOp, TysWiredIn.stringTy)
31 then
32         Id (Const.Con(..)), CoreSyn
33 then
34         CoreUtils (loop PprCore.pprCoreExpr), CoreFVs
35 then    
36         OccurAnal (ThinAir.noRepStrs -- an awkward dependency)
37 then
38         CoreUnfold (loop OccurAnal.globalOccurAnalyse)
39 then
40         Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding)
41 then
42         MkId (CoreUnfold.mkUnfolding, Subst)
43
44