On Fri, 29 May 2026 17:38:45 GMT, Maurizio Cimadamore <[email protected]> 
wrote:

>> This PR tidies up the DA/DU logic for strict field initialization.
>> The main idea is to revisit the changes around `forEachInitializer`, so that 
>> the method now accepts a predicate.
>> Four predicates are defined:
>> * one that selects all static initializers
>> * one that selects early instance initializers
>> * one that selects late instance initializers
>> * one that selects all instance initializers
>> 
>> Then all calls to `forEachInitializer` are rewired to use the correct 
>> predicate. The resulting code is a bit more declarative and easier to follow.
>> 
>> The main change is that the call to `forEachInitializer` with early instance 
>> predicate is moved from `visitApply` to `visitMethod`.
>> In other words, to follow the spec correctly, DA/DU state for early 
>> initializers must be processed _before_ the first statement in a constructor 
>> body that contains a super call.
>> 
>> This reveals issues in the tests which have been fixed. I have also added a 
>> new test that should pass, but was rejected.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Maurizio Cimadamore has updated the pull request with a new target base due 
> to a merge or a rebase. The pull request now contains two commits:
> 
>  - Merge branch 'lworld' into flow_min
>  - Initial push

lgtm

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

Marked as reviewed by vromero (Committer).

PR Review: 
https://git.openjdk.org/valhalla/pull/2484#pullrequestreview-4391645089

Reply via email to