[lworld] RFR: 8373916: [lworld] TypeName.this.FieldName should be restricted in early construction context [v2]

Vicente Romero vromero at openjdk.org
Fri Jan 23 15:52:50 UTC 2026


On Fri, 23 Jan 2026 11:12:48 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> Vicente Romero has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
>> 
>>  - adding test case
>>  - Merge branch 'lworld' into JDK-8373916
>>  - 8373916: [lworld] TypeName.this.FieldName should be restricted in early construction context
>
> src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java line 1397:
> 
>> 1395:                         } else if (mode == PrologueVisitorMode.THIS_CONSTRUCTOR &&
>> 1396:                                 TreeInfo.isThisOrSelectorDotThis(subtree) &&
>> 1397:                                 TreeInfo.isExplicitThisReference(
> 
> It's a bit sad we have to add an extra check when in reality `isExplicitThisReference` already does what we need -- but is too broad (and confusingly named) as it also picks up `super`.
> 
> For this PR we're fine. In the future I'd like to see `isExplicitThisReference` split into two parts:
> * `isExplicitThisReference`
> * `isExplicitSuperReference`
> And then a method can be defined which does the OR:
> * `isExplicitThisOrSuperReference
> 
> Then your check could only use one of them, whereas the rest of javac can use the OR method.

yes probably the name can be improved but the method tries to determine if the current AST is a reference to the `this` instance of the current class being constructed and this could happen with ASTs containing `super` or `this` so most of the time we want to check both

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

PR Review Comment: https://git.openjdk.org/valhalla/pull/1899#discussion_r2721784893


More information about the valhalla-dev mailing list