1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
Notes on module dependencies
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Name/Var/Type group is a bit complicated. Here's the deal
Things in brackets are what the module *uses*.
A 'loop' indicates a use from a module compiled later
Name, PrimRep
then
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, loop Generics.GenInfo)
then
Type (loop DataCon.DataCon, loop Subst.substTy)
then
FieldLabel( Type), TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
then
Unify, PprType (PprEnv)
then
Literal (TysPrim, PprType), DataCon (PprType)
then
TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId, loop Generics.mkGenInfo)
then
PrimOp (PprType, TysWiredIn)
then
CoreSyn
then
IdInfo (CoreSyn.Unfolding, CoreSyn.CoreRules)
then
Id (lots from IdInfo)
then
CoreFVs, PprCore
then
CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars,
CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate)
then
OccurAnal (CoreUtils.exprIsTrivial)
then
CoreUnfold (OccurAnal.occurAnalyseGlobalExpr)
then
Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding), Generics (mkTopUnfolding)
then
MkId (CoreUnfold.mkUnfolding, Subst)
then
PrelInfo (MkId)
|