Things in brackets are what the module *uses*.
A 'loop' indicates a use from a module compiled later
- Name, PrimRep, FieldLabel (loop Type.Type)
+ Name, PrimRep
then
- Var (loop CoreSyn.CoreExpr, loop IdInfo.IdInfo,
- loop Type.GenType, loop Type.Kind)
+ PrelNames
+then
+ Var (Name, loop IdInfo.IdInfo,
+ loop Type.Type, loop Type.Kind)
then
VarEnv, VarSet, ThinAir
then
Class (loop TyCon.TyCon, loop Type.Type)
then
- TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon)
+ TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon, loop Generics.GenInfo)
then
Type (loop DataCon.DataCon, loop Subst.substTy)
then
- TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
+ FieldLabel( Type), TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
then
Unify, PprType (PprEnv)
then
- Literal (TysPrim, PprType), DataCon
+ Literal (TysPrim, PprType), DataCon (loop PprType)
+then
+ TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId, loop Generics.mkGenInfo)
then
- TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId)
+ TcType( lots of TysWiredIn stuff)
+then
+ PprType( lots of TcType stuff )
then
PrimOp (PprType, TysWiredIn)
then
- CoreSyn
+ CoreSyn [does not import Id]
then
IdInfo (CoreSyn.Unfolding, CoreSyn.CoreRules)
then
CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars,
CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate)
then
+ CoreLint( CoreUtils )
OccurAnal (CoreUtils.exprIsTrivial)
+ CoreTidy (CoreUtils.exprArity )
then
CoreUnfold (OccurAnal.occurAnalyseGlobalExpr)
then
- Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding)
+ Subst (CoreUnfold.Unfolding, CoreFVs)
+ Generics (CoreUnfold.mkTopUnfolding)
+then
+ Rules (CoreUnfold.Unfolding, PprCore.pprTidyIdRules)
then
- MkId (CoreUnfold.mkUnfolding, Subst)
+ MkId (CoreUnfold.mkUnfolding, Subst, Rules.addRule)
+then
+ PrelInfo (MkId)
+ HscTypes( Rules.RuleBase )
+
+---------------- END OF INFRASTRUCTURE --------------------
+then
+ CoreTidy (HscTypes.PersistentCompilerState)