Changes between Version 215 and Version 216 of TypeFunctionsStatus

Sep 20, 2007 5:39:18 AM (7 years ago)



  • TypeFunctionsStatus

    v215 v216  
    55'''Debugging of type families:''' 
    6  0. skolemOccurs for wanteds? 
     6 0. skolemOccurs for wanteds?  At least `F a ~ [G (F a)]` and similar currently result in an occurs check error.  Without skolemOccurs in wanted, the occurs check for wanted would need to be smarter (and just prevent cyclic substitutions of the outlined form silently).  However, when inferring a type, having the rewrites enabled by skolemOccurs available will leads to potentially simpler contexts. 
    77 0. `:t` in ghci doesn't print equalities in contexts properly. 
    88 0. ghci command to print normalised type and add [] as a test to the testsuite. 
    101101 * Generation and plumbing through of rough matches. 
    102102 * Equational constraints in contexts. 
    104 == *OLD* Regression tests of type family patches == 
    106 '''[This is outdated pre-merge info just kept around for a while.]''' 
    108 Current `validate` result: 
    109 {{{ 
    110 Unexpected passes: 
    111    Class1(normal) 
    112    GADT2(normal) 
    114 Unexpected failures: 
    115    Refl2(normal) 
    116    Simple5a(normal) 
    117    rw(normal) 
    118    tcfail065(normal) 
    119    tcfail068(normal) 
    120    tcfail071(normal) 
    121    tcfail076(normal) 
    122    tcfail102(normal) 
    123    tcfail103(normal) 
    124    tcfail153(normal) 
    125    tcfail179(normal) 
    126 }}} 
    128  * Class1: VALID.  (Only marked to fail in head to keep validate happy.) 
    129  * GADT2: VALID.  (Only marked to fail in head to keep validate happy.) 
    130  * Relf2: VALID. Type family BUG. 
    131  * Simple5a: VALID.  Error message changed. 
    132  * ~~break001~~: INVALID.  GHC panic instead of printing error message about ambiguous variable. 
    133  * ~~break006~~: INVALID.  Seems to be the same problem as break001. 
    134  * ~~print019~~: INVALID.  Seems to be the same problem as break001. 
    135  * rw: VALID. Changed error message.  Reports one error less.  Other one is pruned, but still raised if the first one is removed. 
    136  * ~~tc210~~: INVALID (matching `forall a.a -> Int` against `Int -> Int fails). 
    137  * ~~tc211~~: INVALID (tests impredicative types). 
    138  * ~~tcfail046~~: VALID.  Changed error message, BUT the new error message has one more type synonym unfolding, which should be avoided. 
    139  * tcfail065: VALID.  Cosmetic difference, as tidy names are assigned in different order. 
    140  * tcfail068: VALID.  Reports two errors less (probably due to different recovery points).  Yes, I checked that its not that it admits incorrect programs, but just due to different order of checking/pruning of errors. 
    141  * tcfail071: VALID.  Now reports one instead of two errors as deferred unification is checked only after the contexts of mutually recursive groups have been unified.  (The latter is what this test case is really about, and it still works fine for that.) 
    142  * tcfail076: VALID.  Same as tcfail065. 
    143  * tcfail102: VALID. 
    144  * tcfail103: VALID.  Error message is actually better! 
    145  * ~~tcfail128~~: VALID. Same as tcfail046. 
    146  * ~~tcfail145~~: VALID. Error message got worse. 
    147  * tcfail153: VALID.  Error message is different, but equally correct and accurate.  The type mismatch manifests itself at two different subexpressions.  Due to a different traversal order, we now report the error at the other subexpression. 
    148  * tcfail179: VALID.  If anything, the error message improved. 
    149  * while: VALID. Works if definition of `succeed` gets a type signature `Monad m => a -> m a`.  The error seems to be due to the new GADT rules about annotations, but the error message is a bit strange; ie, need to be improved. 
    151 Regression tests that are not part of the fast run: 
    152  * cholewo-eval: core-lint breakage