RFR: JDK-8240658: Code completion not working for lambdas in method invocations that require type inference

Jan Lahoda jan.lahoda at oracle.com
Fri Mar 13 12:20:48 UTC 2020


Hi,

When a method invocation requires type inference, and the user is in the 
process of typing of a (block) lambda that is a parameter to the method 
invocation, javac may not, in some cases, perform the type inference, 
which then may lead to non working code completion in JShell (and 
possibly other tools).

For example (in JShell):
Arrays.stream(new Integer[]{1}).forEach(v -> { System.err.println(v.

and press <tab> - this leads to no proposals currently, as the type of 
"v" is not inferred.

The idea of the proposed patch is to improve the recovery in cases 
significant for cases where the text is being typed, and allow type 
inference in these cases. The type of "v" is then inferred, and the code 
completion works.

Proposed patch:
http://cr.openjdk.java.net/~jlahoda/8240658/webrev.00/

JBS: https://bugs.openjdk.java.net/browse/JDK-8240658

Thanks,
     Jan


More information about the kulla-dev mailing list