Fix the constraint simplifier (Trac #7967)
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 12 Jun 2013 08:38:54 +0000 (09:38 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 12 Jun 2013 08:43:16 +0000 (09:43 +0100)
commit262cab0f1c928fb3fea9afa4d2c442edb3103c08
treec93e9cead95159f7f778efd923198aed1ae35b29
parent4aa7fc89fbdbe38d362e59c93fe8ec02185c8073
Fix the constraint simplifier (Trac #7967)

Richard's bug report showed up a couple of subtleties in the constraint solver

* We can strengthen the kind invariants on CTyEqCan and CFunEqCan
    See Note [Kind orientation for CTyEqCan]
    and Note [Kind orientation for CFunEqCan] in TcRnTypes
  There are some changes to reOrient and checkKind in TcCanonical
  to support these stronger invarants.

* In TcSimplify we must make sure that we re-simplify if defaultTyVar
  does anything.  See Note [Must simplify after defaulting] in TcSimplify.

The usual round of refactoring follows!
compiler/typecheck/TcCanonical.lhs
compiler/typecheck/TcInteract.lhs
compiler/typecheck/TcRnTypes.lhs
compiler/typecheck/TcSMonad.lhs
compiler/typecheck/TcSimplify.lhs