Java 8 language spec flaw/bug
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Fri Aug 22 16:56:57 UTC 2014
On 22/08/14 17:45, Davin McCall wrote:
> Using the ternary operator, however, still fails. I don't see why it
> shouldn't behave in exactly the same way as the "ternary" method I
> defined in my example, however. I am somewhat suspicious that perhaps
> the compiler, and not the spec, is again to blame.
Well, if you look at Dan's eval of 8044053, he explains that the
conditional is missing the same subtle check that has been applied for
nested method calls - i.e. a reference conditional is always a poly
conditional - it's never type-checked bottom up; on the other hand, for
nested method calls there is some extra analysis to prevent constraint
propagation and to allow for more compatibility. I think that, in the
case of conditionals, there's a design tension between being able to
define a granular enough classification (poly vs. standalone) that will
allow 'reasonable' code to compile vs. defining a classification
analysis that's easy to spot when you read the code.
Maurizio
More information about the lambda-dev
mailing list