-ToDo
-~~~~
-* Test effect of eta-expanding past (case x of ..)
+Module dependency information is now given in the GHC commentary
-* Bottom strictness isn't right. Should be (eg) SSX, not just X.
+ ghc/docs/comm/genesis/modules.html
-* Enumeration types in worker/wrapper for strictness analysis
-
-* Use (!) types in data cons to unbox.
-
-* Check constant folding
-
-* .hi file isn't updated if the only change is to the exports.
- For example, UgenAll.lhs re-exports all of U_binding.hs; when a data type
- decl in the latter changes, the .hi file for the former isn't updated.
- I think this happens when a module exports another mdodule thus:
-
- module UgenAll( module U_binding, ... ) where
-
-* This should be reported as an error:
- data T k = MkT (k Int#)
-
-* Bogus report of overlapped pattern for
- f (R {field = [c]}) = 1
- f (R {}) = 2
- This shows up for TyCon.maybeTyConSingleCon
-
-* > module Main( main ) where
-
- > f :: String -> Int
- > f "=<" = 0
- > f "=" = 0
-
- > g :: [Char] -> Int
- > g ['=','<'] = 0
- > g ['='] = 0
-
- > main = return ()
-
- For ``f'' the following is reported.
-
- tmp.lhs:4:
- Pattern match(es) are overlapped in the definition of function `f'
- "=" = ...
-
- There are no complaints for definition for ``g''.
-
-* Without -O I don't think we need change the module version
- if the usages change; I forget why it changes even with -O
-
-* Record selectors for existential type; no good! What to do?
- Record update doesn't make sense either.
-
- Need to be careful when figuring out strictness, and when generating
- worker-wrapper split.
-
- Also when deriving.
-
-* Consructor re-use via CSE
-
- Notes on module dependencies
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Name/Var/Type group is a bit complicated. Here's the deal
-
- Name, PrimRep, FieldLabel (uses Type.Type)
-then
- Var (uses Const.Con, IdInfo.IdInfo, Type.GenType, Type.Kind)
-then
- VarEnv, VarSet
-then
- Class (uses TyCon.TyCon, Type.Type, SpecEnv.SpecEnv)
-then
- TyCon (uses Type.Type, Type.Kind, DataCon.DataCon)
-then
- Type (uses [DataCon.DataCon])
-then
- DataCon, TysPrim, Unify, SpecEnv, PprType
-then
- IdInfo, TysWiredIn (uses DataCon.mkDataCon, [MkId.mkDataConId])
-then
- PrimOp (uses PprType, TysWiredIn)
-then
- Const (needs PrimOp, [TysWiredIn.stringTy])
-then
- Id (needs Const.Con(..)), CoreSyn
-then
- CoreUtils, OccurAnal
-then
- CoreUnfold (uses OccurAnal)
-then
- MkId (uses CoreUnfold)
-
-
-PrimOp uses TysWiredIn
-
-
-Add
-~~~
-basicTypes/DataCon.lhs
-basicTypes/DataCon.hi-boot
-
-Remove
-~~~~~~
-specialise/SpecUtils.lhs
-basicTypes/IdUtils.lhs