Don't suppress warnings in the presence of errors
Consider this fragment of code (uses injective type families, not yet merged into HEAD):
type family Bar a = r | r -> a where Bar Int = Bool Bar Bool = Int Bar Bool = Char bar :: Bar a -> Bar a bar x = x barapp :: Char barapp = bar 'c'
GHC rejects this with an error:
Couldn't match expected type ‘Bar a0’ with actual type ‘Char’ The type variable ‘a0’ is ambiguous In the first argument of ‘bar’, namely ‘'c'’ In the expression: bar 'c' In an equation for ‘barapp’: barapp = bar 'c'
The reason why this is rejected is that the last type family equation is not reachable. GHC warns about that if I comment out
Dropping overlapped type family instance equation: Bar Bool = Char
I believe that with that warning source of the error would be easier to find. So I propose that by default GHC does not suppress warnings in the presence of errors.