From f4edb2e35bd7bd74fb332605fdf7c795e9ec8e13 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 23 Aug 2016 17:45:29 +0300 Subject: [PATCH] unused declaration: take inner class settings into account --- .../daemon/impl/analysis/PostHighlightingVisitor.java | 8 ++++++-- .../unusedSymbol/UnusedSymbolLocalInspectionBase.java | 3 +-- .../deadCode/UnusedDeclarationPresentation.java | 7 +++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java index 634bfcf27e3a..b449a9be7423 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java @@ -234,8 +234,12 @@ class PostHighlightingVisitor { return processMethod(myProject, (PsiMethod)parent, identifier, progress, helper); } } - if (parent instanceof PsiClass && compareVisibilities((PsiModifierListOwner)parent, myUnusedSymbolInspection.getClassVisibility())) { - return processClass(myProject, (PsiClass)parent, identifier, progress, helper); + if (parent instanceof PsiClass) { + final String acceptedVisibility = ((PsiClass)parent).getContainingClass() == null ? myUnusedSymbolInspection.getClassVisibility() + : myUnusedSymbolInspection.getInnerClassVisibility(); + if (compareVisibilities((PsiModifierListOwner)parent, acceptedVisibility)) { + return processClass(myProject, (PsiClass)parent, identifier, progress, helper); + } } return null; } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspectionBase.java index 26d59a7e17f0..75005b6ae5eb 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspectionBase.java @@ -23,7 +23,6 @@ import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.PsiModifier; import org.intellij.lang.annotations.Pattern; -import org.jdom.Attribute; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -39,7 +38,7 @@ public class UnusedSymbolLocalInspectionBase extends BaseJavaLocalInspectionTool public boolean FIELD = true; public boolean METHOD = true; public boolean CLASS = true; - protected boolean INNER_CLASS = CLASS; + protected boolean INNER_CLASS = true; public boolean PARAMETER = true; public boolean REPORT_PARAMETER_FOR_PUBLIC_METHODS = true; diff --git a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java index 9b97df5b814f..4f31761469ac 100644 --- a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java +++ b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java @@ -439,8 +439,11 @@ public class UnusedDeclarationPresentation extends DefaultInspectionToolPresenta @PsiModifier.ModifierConstant private static String getAcceptedVisibility(UnusedSymbolLocalInspectionBase tool, RefJavaElement element) { - if (element instanceof RefClass || element instanceof RefImplicitConstructor) { - return tool.getClassVisibility(); + if (element instanceof RefImplicitConstructor) { + element = ((RefImplicitConstructor)element).getOwnerClass(); + } + if (element instanceof RefClass) { + return element.getOwner() instanceof RefClass ? tool.getInnerClassVisibility() : tool.getClassVisibility(); } if (element instanceof RefField) { return tool.getFieldVisibility();