RFR: 8324651: Compiler Implementation for Derived Record Creation (Preview) [v7]
Maurizio Cimadamore
mcimadamore at openjdk.org
Fri Apr 5 13:05:10 UTC 2024
On Fri, 5 Apr 2024 12:40:22 GMT, Jan Lahoda <jlahoda at 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/Check.java line 4913:
> 4911:
> 4912: void checkDerivedInstanceBlockStructure(JCDerivedInstance instance) {
> 4913: new TreeScanner() {
I note that here we don't care about leaving locals declared inside a block in the `seenVariables` after the block ends (e.g. I see no visitBlock). I think that's probably ok, given that every variable has a fresh symbol, so checking against the `seenVariables` set will fail anyway for two variables that have same name, but different scopes.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18509#discussion_r1553596699
More information about the core-libs-dev
mailing list