summaryrefslogtreecommitdiff
path: root/ghc/compiler/DEPEND-NOTES
blob: 859d1a2142a836c5b02798627880a93fe146d85f (plain)
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
		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, FieldLabel (loop Type.Type)
then
	Var (loop Const.Con, loop IdInfo.IdInfo, 
	     loop Type.GenType, loop Type.Kind)
then
	VarEnv, VarSet, ThinAir
then
	Class (loop TyCon.TyCon, loop Type.Type, loop InstEnv.InstEnv)
then
	TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon)
then
	Type (loop DataCon.DataCon, loop Subst.substTy)
then
	TysPrim (Type), PprEnv (loop DataCon.DataCon, Type)
then
	Unify, PprType (PprEnv)
then
	Literal (TysPrim, PprType), DataCon
then
	InstEnv (Unify)
then
	TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId)
then
	PrimOp (PprType, TysWiredIn)
then
	IdInfo (loop CoreSyn.CoreRules, loop CoreUnfold.Unfolding) 
then
	Const (PrimOp.PrimOp, TysWiredIn.stringTy)
then
	Id (Const.Con(..)), CoreSyn
then
	CoreFVs, PprCore
then
	CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars)
then	
	OccurAnal (ThinAir.noRepStrs -- an awkward dependency)
then
	CoreUnfold (loop OccurAnal.globalOccurAnalyse)
then
	Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding)
then
	MkId (CoreUnfold.mkUnfolding, Subst)