RFR: 8354090: Refactor import warning suppression in Check.java
Archie Cobbs
acobbs at openjdk.org
Wed Apr 9 01:29:33 UTC 2025
On Wed, 9 Apr 2025 01:20:50 GMT, Archie Cobbs <acobbs at openjdk.org> wrote:
> This is split off as a sub-task of [JDK-8224228](https://bugs.openjdk.org/browse/JDK-8224228), which seeks to add `@SuppressWarnings` support for lexical features.
>
> In JDK 9 and later, there is a special exception to the normal rules for deprecation and preview warnings, which is that these warnings are automatically suppressed for import statements. This is because an import statement is just a lexical shortcut, not an actual use of the symbol.
>
> The current code in `Check.java` implements this by manipulating the current `Lint` instance directly, but this operation is incompatible upcoming changes to deferred lint handling. Instead, there can be an explicit flag for "import warning suppression" in `Check.java` to handle this. This will also make the code a bit clearer.
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java line 3826:
> 3824: sIsPreview = false;
> 3825: previewSymbol = null;
> 3826: }
We don't defer here because we want `warnPreviewAPI()` to use the current value of `importSuppression`, not some later value. But these warnings didn't really need to be deferred in the first place - because we can just use the current `Lint` instance, and in fact, that's what it was already doing. But a side effect of these changes is that the warnings checked in the `PreviewAutoSuppress.java` regression test get reordered.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24532#discussion_r2034296045
More information about the compiler-dev
mailing list