Implement a fast path for new constraints looking like (a~b), namely unifyWanted
Looking at some typechecker traces I could see places where we were laboriously creating a Refl coercion. This patch short-circuits the process. See TcCanonical: Note [unifyWanted and unifyDerived] Note [Decomposing TyConApps] I ended up with some refactoring, notably * I moved xCtEvidence, rewriteEvidence, rewriteEqEvidence from TcSMonad to TcCanonical There are some knock-on effects, but only minor ones.
Showing with 436 additions and 321 deletions