On Wed, 17 Sep 2025 13:37:09 GMT, Maurizio Cimadamore <[email protected]>
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