Fix Trac #2985: generating superclasses and recursive dictionaries
The Note [Recursive instances and superclases] explains the subtle issues to do with generating the bindings for superclasses when we compile an instance declaration, at least if we want to do the clever "recursive superclass" idea from the SYB3 paper. The old implementation of tcSimplifySuperClasses stumbled when type equalities entered the picture (details in the Note); this patch fixes the problem using a slightly hacky trick. When we re-engineer the constraint solver we'll want to keep an eye on this. Probably worth merging to the 6.10 branch.
Showing with 53 additions and 27 deletions