Wrong desugaring of type synonyms
The program
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.
Edited by Finn Teegen