inference trouble with recursive generics and raw types

Stephan Herrmann stephan.herrmann at
Tue Nov 5 10:19:17 PST 2013

On 11/05/2013 07:03 PM, Dan Smith wrote:
> On Nov 5, 2013, at 4:01 AM, Stephan Herrmann <stephan.herrmann at> wrote:
>>  From ⟨Bar<Foo> <: Bar<P#0>⟩, 18.2.3 creates ⟨Foo <= P#0⟩.
>> Since neither Foo nor P#0 are wildcards I see 18.2.3 producing ⟨Foo <: P#0⟩,
>> further reduced to the bound Foo <: P#0 because P#0 is an inference variable.
 > [...]
> It has to be equality -- that's the way subtyping works (see JLS 4.10): List<foo> <: List<bar> implies foo = bar.

Good :)

So, since reduction happens in several steps (via the type argument containment),
which step needs correcting? Drop the type argument containment and go
directly to equality? In that case type argument containment constraints
seem to be unused in the spec, right?


More information about the lambda-spec-experts mailing list