diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/RemoveSuppressWarningAction.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/RemoveSuppressWarningAction.java index 7ea04404900c..5744f15132ab 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/RemoveSuppressWarningAction.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/RemoveSuppressWarningAction.java @@ -64,7 +64,7 @@ public class RemoveSuppressWarningAction implements LocalQuickFix { PsiElement element = descriptor.getPsiElement(); try { if (element != null) { - final PsiJavaDocumentedElement commentOwner = PsiTreeUtil.getParentOfType(element, PsiJavaDocumentedElement.class, false); + final PsiModifierListOwner commentOwner = PsiTreeUtil.getParentOfType(element, PsiModifierListOwner.class, false); if (commentOwner != null) { final PsiElement psiElement = JavaSuppressionUtil.getElementMemberSuppressedIn(commentOwner, myID); if (psiElement instanceof PsiAnnotation) { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/JavaSuppressionUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/JavaSuppressionUtil.java index 79d55e5e2a61..22234ede73fd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/JavaSuppressionUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/JavaSuppressionUtil.java @@ -90,8 +90,11 @@ public class JavaSuppressionUtil { JavaSuppressionUtil::getInspectionIdSuppressedInAnnotationAttribute); } - public static PsiElement getElementMemberSuppressedIn(@NotNull PsiJavaDocumentedElement owner, @NotNull String inspectionToolID) { - PsiElement element = getDocCommentToolSuppressedIn(owner, inspectionToolID); + public static PsiElement getElementMemberSuppressedIn(@NotNull T owner, @NotNull String inspectionToolID) { + PsiElement element = null; + if (owner instanceof PsiJavaDocumentedElement) { + element = getDocCommentToolSuppressedIn((PsiJavaDocumentedElement)owner, inspectionToolID); + } if (element != null) return element; if (owner instanceof PsiModifierListOwner) { element = getAnnotationMemberSuppressedIn((PsiModifierListOwner)owner, inspectionToolID); @@ -192,7 +195,7 @@ public class JavaSuppressionUtil { return null; } - static PsiElement getElementToolSuppressedIn(@NotNull final PsiElement place, @NotNull final String toolId) { + public static PsiElement getElementToolSuppressedIn(@NotNull final PsiElement place, @NotNull final String toolId) { if (place instanceof PsiFile) return null; return ReadAction.compute(() -> { final PsiElement statement = SuppressionUtil.getStatementToolSuppressedIn(place, toolId, PsiStatement.class); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/redundantUncheckedVarargs/afterAnnotationOnLocalVariable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/redundantUncheckedVarargs/afterAnnotationOnLocalVariable.java new file mode 100644 index 000000000000..e59eac429550 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/redundantUncheckedVarargs/afterAnnotationOnLocalVariable.java @@ -0,0 +1,14 @@ +// "Remove 'unchecked' suppression" "true" +import java.util.*; + +public class Test { + @SafeVarargs + static List foo(T... t){ + return null; + } + + void foo() { + List> list = foo(new ArrayList()); + } +} + diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/redundantUncheckedVarargs/beforeAnnotationOnLocalVariable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/redundantUncheckedVarargs/beforeAnnotationOnLocalVariable.java new file mode 100644 index 000000000000..82eeebffbeb9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/redundantUncheckedVarargs/beforeAnnotationOnLocalVariable.java @@ -0,0 +1,14 @@ +// "Remove 'unchecked' suppression" "true" +import java.util.*; + +public class Test { + @SafeVarargs + static List foo(T... t){ + return null; + } + + void foo() { + @SuppressWarnings("unchecked") List> list = foo(new ArrayList()); + } +} +