From 2a48175d20c0df40911e31f778613a7f67fe38ff Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Mon, 4 May 2026 19:15:29 -0400 Subject: [PATCH 1/3] Add SuppressWarnings classes with AnnotatedFor methods --- .../annotatedfornullness/AnnotatedForNullness.java | 8 ++++++++ .../annotatedfor/AnnotatedForTest.java | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java b/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java index b0c4472ec506..86534cb02189 100644 --- a/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java +++ b/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java @@ -73,4 +73,12 @@ void bar() { annotatedForNullness(initializedField); annotatedForNullnessAndInitialization(initializedField); } + + @SuppressWarnings("nullness") + class SuppressWarningsClassWithAnnotatedForMethod { + @AnnotatedFor("nullness") + @NonNull Object m() { + return null; + } + } } diff --git a/framework/tests/conservative-defaults/annotatedfor/AnnotatedForTest.java b/framework/tests/conservative-defaults/annotatedfor/AnnotatedForTest.java index b73ea47242b4..967ca6dca4fe 100644 --- a/framework/tests/conservative-defaults/annotatedfor/AnnotatedForTest.java +++ b/framework/tests/conservative-defaults/annotatedfor/AnnotatedForTest.java @@ -247,4 +247,14 @@ static class staticAnnotatedAndWarningsSuppressedClass { so4 = staticUnannotatedMethod(so1); } } + + // Class-level @SuppressWarnings("subtyping") should override a method-level + // @AnnotatedFor("subtyping") + @SuppressWarnings("subtyping") + class SuppressWarningsClassWithAnnotatedForMethod { + @AnnotatedFor("subtyping") + @SubQual Object m(@SuperQual Object p) { + return p; + } + } } From 66e664f497b198e9b1dcc430ea23cdd2aa1f4368 Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Mon, 4 May 2026 19:28:19 -0400 Subject: [PATCH 2/3] Remove redundant check for AnnotatedFor in SourceChecker --- .../org/checkerframework/framework/source/SourceChecker.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/framework/src/main/java/org/checkerframework/framework/source/SourceChecker.java b/framework/src/main/java/org/checkerframework/framework/source/SourceChecker.java index c3133c10c211..1263e01f931b 100644 --- a/framework/src/main/java/org/checkerframework/framework/source/SourceChecker.java +++ b/framework/src/main/java/org/checkerframework/framework/source/SourceChecker.java @@ -2875,11 +2875,6 @@ public boolean shouldSuppressWarnings(Element elt, String errKey) { return true; } } - if (isAnnotatedForThisCheckerOrUpstreamChecker(elt)) { - // Return false immediately. Do NOT check for AnnotatedFor in the - // enclosing elements, because they may not have an @AnnotatedFor. - return false; - } } return false; } From 90c6889df9af476634622fbfdfeeda95be11a55a Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Mon, 4 May 2026 22:31:29 -0400 Subject: [PATCH 3/3] Remove redundant check for AnnotatedFor in SourceChecker --- .../annotatedfornullness/AnnotatedForNullness.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java b/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java index 86534cb02189..4f7b9aa7da62 100644 --- a/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java +++ b/checker/tests/nulless-conservative-defaults/annotatedfornullness/AnnotatedForNullness.java @@ -74,6 +74,8 @@ void bar() { annotatedForNullnessAndInitialization(initializedField); } + // Class-level @SuppressWarnings("nullness") should override a method-level + // @AnnotatedFor("nullness") @SuppressWarnings("nullness") class SuppressWarningsClassWithAnnotatedForMethod { @AnnotatedFor("nullness")