• 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).
    03d48526
TcInteract.hs 102 KB