Wrong desugaring of type synonyms
type A _ _ c = c f = error "" :: A x x y
gets desugared to
type A _ _ c = c f = error "" :: x
while the local type signature should be
:: y. This is due to the double occurence of the variable
x that is not handled properly.