diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java index 572808a8fff5..0617af3924f7 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java @@ -93,6 +93,7 @@ import com.intellij.psi.SyntheticElement; import com.intellij.psi.TypeAnnotationProvider; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.VariableKind; +import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.impl.search.JavaNullMethodArgumentUtil; import com.intellij.psi.impl.search.JavaOverridingMethodsSearcher; import com.intellij.psi.search.GlobalSearchScope; @@ -385,9 +386,13 @@ public class NullableStuffInspectionBase extends AbstractBaseJavaLocalInspection LocalQuickFix.from(action)); } else { - ModCommandAction action = new MoveAnnotationOnStaticMemberQualifyingTypeFix(annotation); - reportIncorrectLocation(holder, annotation, listOwner, "inspection.nullable.problems.outer.type", - LocalQuickFix.from(action)); + // If outer is qualifier of static member then don't report problem as it is already reported + // as ANNOTATION_NOT_ALLOWED_STATIC which contains exactly the same fix "Move annotation". + if (!PsiImplUtil.isTypeQualifierOfStaticMember(outerCtx)) { + ModCommandAction action = new MoveAnnotationOnStaticMemberQualifyingTypeFix(annotation); + reportIncorrectLocation(holder, annotation, listOwner, "inspection.nullable.problems.outer.type", + LocalQuickFix.from(action)); + } } } if (parent instanceof PsiReferenceList) { diff --git a/java/java-tests/testData/inspection/nullableProblems/IncorrectPlacement.java b/java/java-tests/testData/inspection/nullableProblems/IncorrectPlacement.java index 9f603cc2be72..db256841f391 100644 --- a/java/java-tests/testData/inspection/nullableProblems/IncorrectPlacement.java +++ b/java/java-tests/testData/inspection/nullableProblems/IncorrectPlacement.java @@ -20,6 +20,13 @@ public class IncorrectPlacement extends @NotNull int[] data; + + void testStaticNested() { + // No "Outer type is inherently non-null" warning. Reported error provides the same "Move annotation" fix. + @Nullable IncorrectPlacement.StaticNested a1; + IncorrectPlacement.@Nullable StaticNested a2; + } class Inner {} + static class StaticNested {} } \ No newline at end of file