RFR: 8294943: Implement record patterns in enhanced for [v8]

Aggelos Biboudis abimpoudis at openjdk.org
Fri Nov 11 17:38:31 UTC 2022


On Fri, 11 Nov 2022 16:29:10 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> Aggelos Biboudis has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Fix parsing error in presence of nested patterns
>
> src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java line 2987:
> 
>> 2985:         boolean inType = false;
>> 2986:         boolean inSelectionAndParenthesis = false;
>> 2987:         boolean sequentialIdentifiers = false;
> 
> In general the changes look good - but please make sure that we don't get confused by lambda expressions. E.g. a lambda can be like `(type name)`, so you have two identifiers between parens. Or, even `(int x)`, so `int x` between parens - which I think will trick this code into thinking you have a record?

This qualifies as a test case to add and a new bug to fix :D 
Good catch.


static <T> void method2(Function<Integer, Integer> f) {}
int i = 42;
for (method2((Integer a) -> 42); i == 0;) { i++; }

-------------

PR: https://git.openjdk.org/jdk/pull/10798


More information about the compiler-dev mailing list