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 CoreSyn.CoreExpr, 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 TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
23 Unify, PprType (PprEnv)
25 Literal (TysPrim, PprType), DataCon
29 TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId)
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)
50 MkId (CoreUnfold.mkUnfolding, Subst)