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!
Showing with 194 additions and 169 deletions