RFR: JDK-8226522: No compilation error reported when yield is used in incorrect context
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Mon Jul 1 09:06:26 UTC 2019
Better thanks!
Maurizio
On 01/07/2019 08:33, Jan Lahoda wrote:
> On 29. 06. 19 23:04, Maurizio Cimadamore wrote:
>> The fix looks good - but I suggest a refactoring of the condition
>> which, as is, is quite difficult to parse (for the human eyes).
>>
>> Maybe factor away:
>>
>> Name restrictedTypeName = restrictedTypeName(result, !allowVar)
>>
>>
>> ?
>
> Thanks! Updated webrev:
> http://cr.openjdk.java.net/~jlahoda/8226522/webrev.01/
>
> Does this look better?
>
> Thanks,
> Jan
>
>>
>> Maurizio
>>
>> On 28/06/2019 13:33, Jan Lahoda wrote:
>>> Hi,
>>>
>>> For code like:
>>> I i = (yield a) -> {};
>>>
>>> interface I { public void test(String a); }
>>>
>>> javac will compile the code, as if the "yield" was "var". This is
>>> because of a mistake in restricted types handling in this case.
>>>
>>> Proposed fix is to ensure we are seeing "var" as the lambda
>>> parameter type, not yield.
>>>
>>> Webrev: http://cr.openjdk.java.net/~jlahoda/8226522/webrev.00/
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8226522
>>>
>>> How does this look?
>>>
>>> Thanks,
>>> Jan
More information about the compiler-dev
mailing list