• Simon Peyton Jones's avatar
    Improve kind generalisation, error messages · 9fa26aa1
    Simon Peyton Jones authored
    This patch does two things:
    
    * It refactors GHC.Tc.Errors a bit.  In debugging Quick Look I was
      forced to look in detail at error messages, and ended up doing a bit
      of refactoring, esp in mkTyVarEqErr'.  It's still quite a mess, but
      a bit better, I think.
    
    * It makes a significant improvement to the kind checking of type and
      class declarations. Specifically, we now ensure that if kind
      checking fails with an unsolved constraint, all the skolems are in
      scope.  That wasn't the case before, which led to some obscure error
      messages; and occasional failures with "no skolem info" (eg #16245).
    
    Both of these, and the main Quick Look patch itself, affect a /lot/ of
    error messages, as you can see from the number of files changed.  I've
    checked them all; I think they are as good or better than before.
    
    Smaller things
    
    * I documented the various instances of VarBndr better.
      See Note [The VarBndr tyep and its uses] in GHC.Types.Var
    
    * Renamed GHC.Tc.Solver.simpl_top to simplifyTopWanteds
    
    * A bit of refactoring in bindExplicitTKTele, to avoid the
      footwork with Either.  Simpler now.
    
    * Move promoteTyVar from GHC.Tc.Solver to GHC.Tc.Utils.TcMType
    
    Fixes #16245 (comment 211369), memorialised as
      typecheck/polykinds/T16245a
    Also fixes the three bugs in #18640
    9fa26aa1
Errors.hs 125 KB