Confusing overloading error

The compiler correctly gives an error for the code below:

import StdEnv

f :: b a -> b | + a
f x _ = x + x

The error is:

Overloading error [test.icl,5,f]: internal overloading of "+" could not be solved for: + a (context does not occur in function type)

This is confusing (or even incorrect), because + a does occur in the function type. It is + b which is missing.