On Fri, 5 Apr 2024 12:40:22 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> This is a patch for javac, that adds the Derived Record Creation 
>> expressions. The current draft specification for the feature is:
>> https://cr.openjdk.org/~gbierman/jep468/jep468-20240326/specs/derived-record-creation-jls.html
>> 
>> The current CSR is here:
>> https://bugs.openjdk.org/browse/JDK-8328637
>> 
>> The patch is mostly straightforward, with two notable changes:
>>  - there is a new `ElementKind.COMPONENT_LOCAL_VARIABLE`, as the 
>> specification introduces this term, and it seems consistent with 
>> `ElementKind.BINDING_VARIABLE` that was introduced some time ago.
>>  - there are a bit broader changes in `Flow`, to facilitate the introduction 
>> of variables without an explicit declaration for definite assignment and 
>> effectively final computation.
>
> Jan Lahoda has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   JavaCompiler cleanup

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java line 2117:

> 2115:          *  position.
> 2116:          */
> 2117:         protected VarAndDeclarationTree[] vars;

So... normally, a `JCVariableDecl` would have a symbol attached, which is how 
the old code used to work. Is it correct that this change is needed because the 
`componentLocalVariables` list is a list of symbols and not of JCVariableDecl? 
Would it be too complex to create a declaration in Attr and save those in the 
derived creation tree?

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java line 4443:

> 4441:     }
> 4442: 
> 4443:     @Override

As usual, I suggest to add some brief comment with the shape of the generated 
code.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18509#discussion_r1553607860
PR Review Comment: https://git.openjdk.org/jdk/pull/18509#discussion_r1553608813

Reply via email to