1 Notes on module dependencies
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
8 Name, PrimRep, FieldLabel (loop Type.Type)
10 Var (loop Const.Con, loop IdInfo.IdInfo,
11 loop Type.GenType, loop Type.Kind)
13 VarEnv, VarSet, ThinAir
15 Class (loop TyCon.TyCon, loop Type.Type, loop InstEnv.InstEnv)
17 TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon)
19 Type (loop DataCon.DataCon, loop Subst.substTy)
21 DataCon, TysPrim, Unify, PprType
25 IdInfo (loop CoreRules.CoreRules)
26 TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId)
28 PrimOp (PprType, TysWiredIn, IdInfo.StrictnessInfo)
30 Const (PrimOp.PrimOp, TysWiredIn.stringTy)
32 Id (Const.Con(..)), CoreSyn
34 CoreUtils (loop PprCore.pprCoreExpr), CoreFVs
36 OccurAnal (ThinAir.noRepStrs -- an awkward dependency)
38 CoreUnfold (loop OccurAnal.globalOccurAnalyse)
40 Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding)
42 MkId (CoreUnfold.mkUnfolding, Subst)