summaryrefslogtreecommitdiff
path: root/ghc/compiler/DEPEND-NOTES
blob: fb966c66b78fd2b49bb4422780d862f8d3c930a2 (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
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)