RFR: 8334252: Verifier error for lambda declared in early construction context [v2]
Maurizio Cimadamore
mcimadamore at openjdk.org
Fri Jun 14 14:24:12 UTC 2024
On Thu, 13 Jun 2024 21:57:24 GMT, Archie Cobbs <acobbs at openjdk.org> wrote:
>> When a lambda is declared in an early construction context, any reference to an outer instance must be acquired through the synthetic constructor rather than the synthetic outer instance field, because 'this' is not available yet.
>>
>> The code in `LambdaToMethod.java` has logic for this using the `typesUnderConstruction` field, but that logic assumes that the only early construction context that can exist is within a `super()` or `this()` parameter list. While this was true previously, with the "flexible constructors" JEP 482, this is no longer the case.
>>
>> So the fix is to update the logic for managing `typesUnderConstruction` to also include any statements prior to `super()` or `this()`.
>
> Archie Cobbs has updated the pull request incrementally with one additional commit since the last revision:
>
> Address review suggestion.
Marked as reviewed by mcimadamore (Reviewer).
-------------
PR Review: https://git.openjdk.org/jdk/pull/19707#pullrequestreview-2118517951
More information about the compiler-dev
mailing list