RFR: 8350212: Track source end positions of declarations that support @SuppressWarnings [v8]
Archie Cobbs
acobbs at openjdk.org
Fri May 30 20:30:53 UTC 2025
On Fri, 30 May 2025 20:14:30 GMT, Archie Cobbs <acobbs at openjdk.org> wrote:
>> This PR is a sub-task split off from [JDK-8224228](https://bugs.openjdk.org/browse/JDK-8224228), which seeks to add `@SuppressWarnings` support for lexical features.
>>
>> Lexical features don't know about classes, members or symbols, so their source file positions must be matched to the source file character offset range of the innermost containing `JCModuleDecl`, `JCPackageDecl`, `JCClassDecl`, `JCMethodDecl`, or `JCVariableDecl`. That means we need the end positions of all such declarations to be available.
>>
>> The parser doesn't normally store lexical end positions unless explicitly requested, and we don't want to mandate it for performance reasons.
>>
>> Instead, we can just add an `int endPos` field to these five AST nodes. This field can be populated as part of the normal parsing of these node types, which already supports the (optional) tracking of end positions.
>
> Archie Cobbs has updated the pull request incrementally with one additional commit since the last revision:
>
> Update EndPosTable.replaceTree() to handle a new node equal to null.
Forgot to follow-up on this comment:
> Note, I still think we're mixing up the functions...
Yep, it was part of a misguided attempt to consolidate the two “end position” methods into a common mechanism. I was misled by the names. Instead (someday) we should change the method names to make them more distinct. Short of that, this patch now just updates the field names and the comment above the `endPos` method.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/23669#issuecomment-2923415694
More information about the compiler-dev
mailing list