1 add types/InstEnv, InstEnv.hi-boot
2 add coreSyn/CoreRules.*
3 add coreSyn/CoreTidy.lhs
4 add coreSyn/CoreFVs.lhs
5 remove coreSyn/FreeVars.lhs
7 remove simplCore/MagicUFs.*
9 remove specialise/SpecEnv.*
15 * Test effect of eta-expanding past (case x of ..)
17 * Bottom strictness isn't right. Should be (eg) SSX, not just X.
19 * Enumeration types in worker/wrapper for strictness analysis
21 * Use (!) types in data cons to unbox.
23 * Check constant folding
25 * .hi file isn't updated if the only change is to the exports.
26 For example, UgenAll.lhs re-exports all of U_binding.hs; when a data type
27 decl in the latter changes, the .hi file for the former isn't updated.
28 I think this happens when a module exports another mdodule thus:
30 module UgenAll( module U_binding, ... ) where
32 * This should be reported as an error:
33 data T k = MkT (k Int#)
35 * Bogus report of overlapped pattern for
36 f (R {field = [c]}) = 1
38 This shows up for TyCon.maybeTyConSingleCon
40 * > module Main( main ) where
52 For ``f'' the following is reported.
55 Pattern match(es) are overlapped in the definition of function `f'
58 There are no complaints for definition for ``g''.
60 * Without -O I don't think we need change the module version
61 if the usages change; I forget why it changes even with -O
63 * Record selectors for existential type; no good! What to do?
64 Record update doesn't make sense either.
66 Need to be careful when figuring out strictness, and when generating
71 * Consructor re-use via CSE
73 Notes on module dependencies
74 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
76 The Name/Var/Type group is a bit complicated. Here's the deal
77 Things in brackets are what the module *uses*.
78 A 'loop' indicates a use from a module compiled later
80 Name, PrimRep, FieldLabel (loop Type.Type)
82 Var (loop Const.Con, loop IdInfo.IdInfo,
83 loop Type.GenType, loop Type.Kind)
85 VarEnv, VarSet, ThinAir
87 Class (loop TyCon.TyCon, loop Type.Type, loop InstEnv.InstEnv)
89 TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon)
91 Type (loop DataCon.DataCon, loop Subst.substTy)
93 DataCon, TysPrim, Unify, PprType
97 IdInfo (loop CoreRules.CoreRules)
98 TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId)
100 PrimOp (PprType, TysWiredIn, IdInfo.StrictnessInfo)
102 Const (PrimOp.PrimOp, TysWiredIn.stringTy)
104 Id (Const.Con(..)), CoreSyn
106 CoreUtils (loop PprCore.pprCoreExpr), CoreFVs
108 OccurAnal (ThinAir.noRepStrs -- an awkward dependency)
110 CoreUnfold (loop OccurAnal.globalOccurAnalyse)
112 Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding)
114 MkId (CoreUnfold.mkUnfolding, Subst)