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)
12 Var (Name, loop CoreSyn.CoreExpr, loop IdInfo.IdInfo,
13 loop Type.GenType, loop Type.Kind)
15 VarEnv, VarSet, ThinAir
17 Class (loop TyCon.TyCon, loop Type.Type)
19 TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon, loop Generics.GenInfo)
21 Type (loop DataCon.DataCon, loop Subst.substTy)
23 TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
25 Unify, PprType (PprEnv)
27 Literal (TysPrim, PprType), DataCon
29 TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId, loop Generics.mkGenInfo)
31 PrimOp (PprType, TysWiredIn)
35 IdInfo (CoreSyn.Unfolding, CoreSyn.CoreRules)
41 CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars,
42 CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate)
44 OccurAnal (CoreUtils.exprIsTrivial)
46 CoreUnfold (OccurAnal.occurAnalyseGlobalExpr)
48 Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding), Generics (mkTopUnfolding)
50 MkId (CoreUnfold.mkUnfolding, Subst)