compiler complains about overlapping instances when one is clearly more specific

class C a :: a

:: T a = A

instance C (a b) where
    C = undef

instance C (T b) where
    C = undef

The instance for T b is clearly more specific than the one for a b. So this should compile in my opinion.