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
12 Var (Name, loop IdInfo.IdInfo,
13 loop Type.Type, 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 FieldLabel( Type), TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
25 Unify, PprType (PprEnv)
27 Literal (TysPrim, PprType), DataCon (loop PprType)
29 TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId, loop Generics.mkGenInfo)
31 TcType( lots of TysWiredIn stuff)
33 PprType( lots of TcType stuff )
35 PrimOp (PprType, TysWiredIn)
39 IdInfo (CoreSyn.Unfolding, CoreSyn.CoreRules)
45 CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars,
46 CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate)
48 OccurAnal (CoreUtils.exprIsTrivial)
50 CoreUnfold (OccurAnal.occurAnalyseGlobalExpr)
52 Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding), Generics (mkTopUnfolding)
54 MkId (CoreUnfold.mkUnfolding, Subst)