| 30 | | * `gadt/lazypatok` needs to be fixed, but are irrefutable patterns really ok, see [http://okmij.org/ftp/Haskell/GADT-problem.hs]? |
| 31 | | * It'd be nice if the error message of `tcfail167` would include "Inaccessible case alternative: Can't match types `Char' and `Float'" again. We could achieve in `TcPat.tcConPat` by having a look at `eq_preds` in the GADT case. If the `eq_preds` are obviously unsatisfiable (due to a clash of data type constructors), then we have an inaccessible case alternative. |
| 32 | | * Rigidity: |
| 33 | | * Shiuld test `GADT7` really succeed? or is it ok to fail. |
| 34 | | * Remove the dodgy rigidity test that is in `tcConPat` right now. |
| 35 | | * implement the proposal where we infer a rigidity flag for case scutinees and pass that down when type checking the patterns. |
| 36 | | * We infer the rigidity flag for the case scrutinee by generalising its type and checking whether that has any foralls at the top. It's rigid if it has no foralls. |
| 37 | | * As usual, if a pattern has a GADT constructor (ie, any constraints in the data constructor signature), the scutinee must be rigid, |
| 38 | | * We need to know of types whether they are rigid (not only whether they contain unification variables). We can achieve that by a flag in the environment that indicates whether the computation of that type involved non-rigid type variables. |
| | 29 | * `gadt/lazypatok` needs to be fixed, but are irrefutable patterns really ok, see [http://okmij.org/ftp/Haskell/GADT-problem.hs]? |
| | 30 | * It'd be nice if the error message of `tcfail167` would include "Inaccessible case alternative: Can't match types `Char' and `Float'" again. We could achieve in `TcPat.tcConPat` by having a look at `eq_preds` in the GADT case. If the `eq_preds` are obviously unsatisfiable (due to a clash of data type constructors), then we have an inaccessible case alternative. |
| | 31 | * Rigidity: |
| | 32 | * Shiuld test `GADT7` really succeed? or is it ok to fail. |
| | 33 | * Remove the dodgy rigidity test that is in `tcConPat` right now. |
| | 34 | * implement the proposal where we infer a rigidity flag for case scutinees and pass that down when type checking the patterns. |
| | 35 | * We infer the rigidity flag for the case scrutinee by generalising its type and checking whether that has any foralls at the top. It's rigid if it has no foralls. |
| | 36 | * As usual, if a pattern has a GADT constructor (ie, any constraints in the data constructor signature), the scutinee must be rigid, |
| | 37 | * We need to know of types whether they are rigid (not only whether they contain unification variables). We can achieve that by a flag in the environment that indicates whether the computation of that type involved non-rigid type variables. |
| 41 | | * Test `Simple17` (corelint error as a dict binding, used to specialise a call to a local function, floats out too far) |
| 42 | | * Improve error messages for loopy equalities: TF tests `Simple13` & `SkolemOccursLoop` |
| 43 | | * #1897: If you infer a type for a function, then should check the function against that sigature, to check that if the user gave that signature, then typechecking would again succeed. See this thread http://www.haskell.org/pipermail/haskell-cafe/2008-April/041385.html. |
| 44 | | * #1769 (deriving typeable for data families) |
| 45 | | * When a `type instance` changes (in an orphan modules), currently clients are not properly recompiled at least by `--make`. |
| 46 | | * When we raise a mismatch error in `TcSimplify` for unresolvable equalities, we effectively tidy the two non-matching types twice. Add a comment to highlight this and say why it is ok (i.e., they are never grouped together with `groupErrs` or similar). |
| 47 | | * #2296: error message involving fundep gives unhelpful location. I want to remember to come back to this one when we have the new type-family simplification stuff in place. |
| 48 | | * Fix export list problem (ie, export of data constructors introduced by orphan data instances): |
| 49 | | * Change `HscTypes.IfaceExport` to use `Name` instead of `OccName`. |
| 50 | | * Then, there is also no need for the grouping of the identifiers by module anymore (but sort it to avoid spurious iface changes dur to re-ordering when re-compiling). |
| 51 | | * We still need to have the name parent map, though. |
| 52 | | * See email for example. |
| 53 | | * Eliminate code duplication between `tcTyClDecl1` and `tcFamInstDecl1`. The code for vanilla data/newtype declarations and the code for data/newtype instances has many commonalities. |
| | 40 | * Test `Simple17` (corelint error as a dict binding, used to specialise a call to a local function, floats out too far) |
| | 41 | * Improve error messages for loopy equalities: TF tests `Simple13` & `SkolemOccursLoop` |
| | 42 | * #1897: If you infer a type for a function, then should check the function against that sigature, to check that if the user gave that signature, then typechecking would again succeed. See this thread http://www.haskell.org/pipermail/haskell-cafe/2008-April/041385.html. |
| | 43 | * #1769 (deriving typeable for data families) |
| | 44 | * When a `type instance` changes (in an orphan modules), currently clients are not properly recompiled at least by `--make`. |
| | 45 | * When we raise a mismatch error in `TcSimplify` for unresolvable equalities, we effectively tidy the two non-matching types twice. Add a comment to highlight this and say why it is ok (i.e., they are never grouped together with `groupErrs` or similar). |
| | 46 | * #2296: error message involving fundep gives unhelpful location. I want to remember to come back to this one when we have the new type-family simplification stuff in place. |
| | 47 | * Fix export list problem (ie, export of data constructors introduced by orphan data instances): |
| | 48 | * Change `HscTypes.IfaceExport` to use `Name` instead of `OccName`. |
| | 49 | * Then, there is also no need for the grouping of the identifiers by module anymore (but sort it to avoid spurious iface changes dur to re-ordering when re-compiling). |
| | 50 | * We still need to have the name parent map, though. |
| | 51 | * See email for example. |
| | 52 | * #2436 (Bad warning on export) |
| | 53 | * Eliminate code duplication between `tcTyClDecl1` and `tcFamInstDecl1`. The code for vanilla data/newtype declarations and the code for data/newtype instances has many commonalities. |