Skip to content
  • Simon Peyton Jones's avatar
    A radical overhaul of the coercion infrastucture · cd0e2c0c
    Simon Peyton Jones authored
    * Core Lint now does full checking of kinds and coercion terms
      which picks up kind errors in coercions that were previously
      simply not checked for
    
    * Coercion.lhs now provides optCoercion which optimises coercion
      terms.  It implements all of Dimitrios's rules
    
    * The constructors for coercion terms now make no attempt to be
      "smart"; instead we rely solely on the coercion optimiser
    
    * CoercionTyCons in TyCon.lhs always had a "custom" kinding rule
      (the coKindFun field of CoercionTyCon) but its type was not 
      clever enough to do both 
         (a) *figure out the result kind*, assuming the whole thing
             is well-kinded in the first place
         (b) *check* the kinds of everything, failing gracefully if
             they aren't right. 
      We need (b) for the new CoreLint stuff. The field now has type
            CoTyConKindChecker
      which does the job nicely.
    cd0e2c0c