IDEA-381733 [java]: Move type annotation quickfix is shown twice

GitOrigin-RevId: 57043eab4896e7cead2c716ef2370fb2dd0ef810
This commit is contained in:
Marcin Mikosik
2026-02-12 20:01:14 +00:00
committed by intellij-monorepo-bot
parent 100f749763
commit be2b0bf8fd
2 changed files with 15 additions and 3 deletions
@@ -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) {
@@ -20,6 +20,13 @@ public class IncorrectPlacement extends <warning descr="Nullability annotation i
}
<warning descr="Primitive type members cannot be annotated">@NotNull</warning> int[] data;
void testStaticNested() {
// No "Outer type is inherently non-null" warning. Reported error provides the same "Move annotation" fix.
<error descr="Static member qualifying type may not be annotated">@Nullable</error> IncorrectPlacement.StaticNested a1;
IncorrectPlacement.@Nullable StaticNested a2;
}
class Inner {}
static class StaticNested {}
}