• Simon Peyton Jones's avatar
    Yet another major refactoring of the constraint solver · dd7522c3
    Simon Peyton Jones authored
    This is the result of Simon and Dimitrios doing a code walk through.
    There is no change in behaviour, but the structure is much better.
    Main changes:
    
    * Given constraints contain an EvTerm not an EvVar
    
    * Correspondingly, TcEvidence is a recursive types that uses
      EvTerms rather than EvVars
    
    * Rename CtFlavor to CtEvidence
    
    * Every CtEvidence has a ctev_pred field.  And use record fields
      consistently for CtEvidence
    
    * The solved-constraint fields of InertSet (namely inert_solved and
      inert_solved_funeqs) contain CtEvidence, not Ct
    
    There is a long cascade of follow-on changes.
    dd7522c3
TcRnTypes.lhs 55.7 KB