Changes between Version 397 and Version 398 of TypeFunctionsStatus


Ignore:
Timestamp:
Oct 4, 2008 12:25:03 PM (6 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TypeFunctionsStatus

    v397 v398  
    88 
    99 * Declarations involving families: 
     10  * Test`Simple8`: 
     11   * Fix tcLookupFamInst to gracefully handle this case.  (This requires some care to not violate assumptions made by other  clients of this function, as it is also used for data families,  but I see no fundamental problem.) 
     12   * Issue a warning if there are two identical instances (as per  Roman's suggestion). 
    1013  * #1968 (GADT syntax in family instances; at least provide a proper error message and don't panic!) 
    1114   * Need to check the result types of the data constructors, probably in `checkValidDataCon`. 
    1215   * `tcFamInstDecl1` needs to allow family GADT instances. 
    13   * Test`Simple8`: 
    14    * Fix tcLookupFamInst to gracefully handle this case.  (This requires some care to not violate assumptions made by other  clients of this function, as it is also used for data families,  but I see no fundamental problem.) 
    15    * Issue a warning if there are two identical instances (as per  Roman's suggestion). 
    1616  * #2203 (TFs in class instance heads) 
    1717  * #2435 (Bug with qualified names in declarations) 
    18   * #2436 (Bad warning on export) 
    1918  * Defaults for associated type synonyms.  (Having both a kind signature and vanilla synonym is problematic as in `RnNames.getLocalDeclBinders` its hard to see that not both of them are defining declarations, which leads to a multiple declarations error.  Defaults are quite different from vanilla synonyms anyway, as they usually have tyvars on their rhs that do not occur on the lhs.)  If an associated synonym has a default definition, use that in the instances.  In contrast to methods, this cannot be overridden by a specialised definition.  (Confluence requires that any specialised version is extensionally the same as the default.) 
    2019 
     
    2827 
    2928 * GADT: 
    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. 
    3938 
    4039 * Misc: 
    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. 
    5454 
    5555'''Additional feature:'''