Fwd: Overload resolution simplification

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Aug 14 14:47:52 PDT 2013


On 14/08/13 22:44, Zhong Yu wrote:
> We shouldn't treat them as equals. Why don't we first use non-lambda
> args to do some inference on the methods, and prune some overload
> candidates, before moving on to resolve the lambda args. This will
> solve the above problem. It'll also solve the problem of
>
>      Comparator<String> comparator = Comparator.comparing(s->s.length());
That's exactly what happens - we've been supporting what we call 
out-of-order method checking for quite some time; it's not like we are 
missing anything obvious - sorry.

Again you seem to keep ignoring the fact that we can't use 
Comparator<String> during overload resolution. Which means there would 
not be such thing as T = String, which again means that, during 
overload, we cannot type-check the lambda body (as we don't know what 
the parameter type is) and therefore cannot use the lambda body to 
disambiguate between the multiple overloads.

Maurizio


More information about the lambda-spec-observers mailing list