Changes between Version 147 and Version 148 of TypeFunctionsStatus

Aug 21, 2007 3:04:30 AM (8 years ago)



  • TypeFunctionsStatus

    v147 v148  
    6  1. Dictionary handling for equational constraints:
     6 1. Dictionary handling for equational constraints: ['''Which of that has Tom done?''']
    77   * Where do we check the details of the formation of equational constraints?  (In `check_pred_ty`?)
    88   * In the case for ordinary instances in `TcInstDcls.tcInstDecl2`, filter the ids of the super class equalities out of `map instToId sc_dicts`.  (They don't appear explicitly in the `Hs' representation of the methods binding.)
    99   * Similarly with `map instToId meth_dicts` in `TcClassDcl.tcMethodBind`  Maybe we just need a special function to replace all occurences of `map instToId`?  Occurs also in `TcPat.tcConPat`.
    1010   * We also have `map instToId` in `TcUnify.tcGen`, but here I am not sure yet whether we cans imply drop the coercion variables or have to do something else.
    11  3. `TcSimplify`: Handle the presence of `EqPred`s in the given set, due to appearing in signature contexts.  (Including that `instToId` doesn't work on `EqPred`s.)
     11 3. `TcSimplify`: Handle the presence of `EqPred`s in the given set, due to appearing in signature contexts.  (Including that `instToId` doesn't work on `EqPred`s.)  ['''Did Tom do that?''']
    1212 4. Well-formedness checks for equational constraints (i.e., anything beyond the type arguments being boxed, rank 0 types)
    3434 * 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.)
    36 Todo (high-level):
     36Todo (high-level): ['''Tom has done much of this.''']
    3737 1. Type checking of type functions (and hence, associated type synonyms); routines in `TcUnify` that need to be extended:
    3838   * `boxySplitTyConApp`: The second argument (`BoxyRhoType`) can be a synonym family application.  Then, we must produce a wanted coercion and return a `HsWrapper` value that applies that coercion.
    7373 * Generation and plumbing through of rough matches.
    7474 * Equational constraints in contexts.
     76== Testsuite ==
     78Current `validate` result:
     80Unexpected passes:
     81   Class1(normal)
     83Unexpected failures:
     84   Refl2(normal)
     85   Simple5a(normal)
     86   break001(ghci)
     87   break006(ghci)
     88   print019(ghci)
     89   rw(normal)
     90   tc210(normal)
     91   tc211(normal)
     92   tcfail046(normal)
     93   tcfail071(normal)
     94   tcfail102(normal)
     95   tcfail128(normal)
     96   tcfail145(normal)
     97   tcfail153(normal)
     98   while(normal)
     101 * Class1: Ok.  (Only marked to fail in head to keep validate happy.)
     102 * Relf2: Type family BUG.
     103 * Simple5a: Changed error message for data families, BUT the new error message is cryptic and indicates a much too complicated treatment of data families.
     104 * break001: INVALID.  GHC panic instead of printing error message about ambiguous variable.
     105 * break006: INVALID.  Seems to be the same problem as break001.
     106 * print019: INVALID.  Seems to be the same problem as break001.
     107 * rw: Changed error message for GADTs.  Seems to be the same behaviour as in Simple5a.
     108 * tc210: INVALID (matching `forall a.a -> Int` against `Int -> Int fails).
     109 * tc211: INVALID (tests impredicative types).
     110 * tcfail046: Changed error message, BUT the new error message has one more type synonym unfolding, which should be avoided.
     111 * tcfail071: Changed error message (has now only one of two parts).  Unsure whether the lack of the second part signals regress.