recursive lambda as a local variable
forax at univ-mlv.fr
Fri Sep 13 03:51:08 PDT 2013
On 09/13/2013 10:21 AM, Peter Levart wrote:
> On 09/12/2013 05:17 PM, Brian Goetz wrote:
>>> - The part left of the '::' can be an arbitrarily long expression that will
>>> be evaluated immediately, while the method invocation itself will be
>>> deferred until the corresponding SAM method is invoked. Thus, 'null' might
>>> by bound now and detected much later.
>> This is just a compiler bug; if the part to the left evaluates to null,
>> it should throw NPE immediately (see jsr335-15.28.2-30-A2: If the result
>> of evaluation of the subexpression is null, then a NullPointerException
>> is thrown.)
>> Thanks for reporting this. I will file a bug.
> This could be checked in lambda metafactory generated constructor,
> right? It doesn't have to be compiler generated code.
> Regards, Peter
but it requires to change the protocol between javac and the lambda
to signal if a captured parameter is bound or not.
It seems simpler, to me, to modify javac to generate
in front of the first argument of the invokedynamic call.
More information about the lambda-dev