• Simon Peyton Jones's avatar
    Introduce tcTypeKind, and use it · 03d48526
    Simon Peyton Jones authored
    In the type checker Constraint and * are distinct; and the function
    that takes the kind of a type should respect that distinction
    (Trac #15971).
    This patch implements the change:
    * Introduce Type.tcTypeKind, and use it throughout the type
      inference engine
    * Add new Note [Kinding rules for types] for the kinding
      rules, especially for foralls.
    * Redefine
        isPredTy ty = tcIsConstraintKind (tcTypeKind ty)
      (it had a much more complicated definition before)
    Some miscellaneous refactoring
    * Get rid of TyCoRep.isTYPE, Kind.isTYPEApp,
      in favour of TyCoRep.kindRep, kindRep_maybe
    * Rename Type.getRuntimeRepFromKind_maybe
      to getRuntimeRep_maybe
    I did some spot-checks on compiler perf, and it really doesn't
    budge (as expected).
TcErrors.hs 128 KB