RefObject and ValObject

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


On 15/04/2019 21:54, forax at univ-mlv.fr 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?

Maurizio




More information about the valhalla-spec-observers mailing list