Note [Equality superclasses]
Suppose we have class (a ~ [b]) => C a b Remember from Note [The equality types story] in GHC.Builtin.Types.Prim, that * (a ~~ b) is a superclass of (a ~ b) * (a ~# b) is a superclass of (a ~~ b) So when closeWrtFunDeps expands superclasses we'll get a (a ~# [b]) superclass. But that's an EqPred not a ClassPred, and we jolly well do want to account for the mutual functional dependencies implied by (t1 ~# t2). Hence the EqPred handling in closeWrtFunDeps. See #10778.
References 1
- The equality types story GHC.Builtin.Types.Prim
Referenced by 1
- GHC.Tc.Instance.FunDeps call site