[lworld] RFR: 8367698: [lworld] New lint category for code that would not be allowed in the prologue

Maurizio Cimadamore mcimadamore at openjdk.org
Wed Sep 17 13:46:19 UTC 2025


On Wed, 17 Sep 2025 13:37:09 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> This PR introduces a new Xlint category: `initialization`. When enabled it will indicate if some code in an identity class couldn't be placed in the prologue phase. This applies to field initializers and constructors with no explicit `super` invocation. So for example for code like:
>> 
>> 
>> class Test {
>>     int i = 0;
>> 
>>     Test() {
>>         this.i = 1;
>>     }
>> }
>> 
>> 
>> a warning will be issued as if there were a super invocation at the end of the constructor, the compiler would issue an error.
>> 
>> PS. The new lint warning had to be disabled during the build as in other case it wouldn't finish
>
> src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java line 1257:
> 
>> 1255:                     }
>> 1256:                     if (!prologueCode.isEmpty()) {
>> 1257:                         CtorPrologueVisitor ctorPrologueVisitor = new CtorPrologueVisitor(localEnv, addedSuperInIdentityClass && allowValueClasses);
> 
> I suppose I'd rather not run the visitor if the lint warning is disabled?

Although, it might be tricky to see whether the warning is enabled or not here. The new design is to issue all warnings all the time, on the basis that typically it's too early to filter here, (but, you don't yet have the latest javac changes here)

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

PR Review Comment: https://git.openjdk.org/valhalla/pull/1595#discussion_r2355561116


More information about the valhalla-dev mailing list