On Tue, 23 Sep 2025 21:20:19 GMT, Archie Cobbs <[email protected]> wrote:
> > While I've read the CSR, I haven't read any compiler-dev thread(s). At > > least not carefully. I also haven't seen the diff. > > FWIW there is a discussion thread (starting > [here](https://mail.openjdk.org/pipermail/compiler-dev/2024-November/028573.html)), > but it's been on/off since November 2024. > > > IIUC, this annotation can be applied to itself: > > `@SupressWarnings("suppression")`. Has the scope of `@SupressWarnings` > > always included the annotation itself, or it's something that you had to > > tweak in this PR? > > Astute question :) In general, it's completely up to the particular warning. > The scope can even extend _before_ the annotation; this is the case with > `"dangling-doc-comments"` (see #24600). But normally the "scope" of a > declaration includes any annotations on that declaration, simply because the > start position of the declaration includes them (the annotations are part of > the declaration, not a separate prior thing). > > Regarding exactly how "it's completely up to the particular warning": Since > #26138, the `DiagnosticPosition` class now has a `getLintPosition()` > property. This allows the caller to specify any arbitrary source code > position at which to define which `@SuppressWarnings` annotations apply to > the warning. Search for `withLintPosition()` to see a couple of uses of it. The reason I ask is that I can probably see how it could be useful to emit a "suppression" warning from this: @SuppressWarnings("suppression") public class A { } I'm not suggesting the PR should implement it, I'm just thinking aloud. I realise that if it were to implement the annotation as non-self-referring, then there would need to be a way to suppress it too, however silly it may sound. IIRC there's no way to apply a meta annotation on a _call site_. Even if `@SuppressWarnings` was a `@Repeatable` annotation, this would not have the desired effect: @SuppressWarnings("suppression") @SuppressWarnings("suppression") public void foo(String bar) { ... Another option is to go one scope higher and put an annotation there: @SuppressWarnings("suppression") public class FooBar { ... @SuppressWarnings("suppression") public void foo(String bar) { ... The problem is that you may not have a higher scope. Which sounds like a rare, uninteresting corner case. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25167#issuecomment-3325606585
