RefObject and ValObject

Maurizio Cimadamore maurizio.cimadamore at
Mon Apr 15 22:29:08 UTC 2019

On 15/04/2019 21:54, forax at wrote:
> m(List<Object> list ) {  ... }
>   ...
>   m(List.of(new Foo(), new Bar()));
Slightly incorrect sir :-)

This is effectively equivalent to the example I wrote earlier

List<Object> list = List.of(...)

The expected type will force the equality constraint and will drive 
inference home.

Otherwise it would not even work today in cases when you pass e.g. 
Integer and String to List.of, as their common supertype is something 
sharper than Object. This stuff used indeed to fail pre-Java 8, but I 
think we cured most of the issues. The remaining ones are when inference 
eagerly resolves variables w/o looking at the target, because a target 
is not there, as for 'var', or because the expression is in a receiver 
position, as in:

List<Object> list2 = List.of(new Foo(), new Bar()).subList(0, 42);

Now, this will fail, but I believe we're in the corner^2 territory?


More information about the valhalla-spec-observers mailing list