From 68ba599e31e4c590d6c62ae12c6f79efd96fc73e Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 25 Mar 2014 11:45:17 +0400 Subject: [PATCH] IDEA-121510 JSP: reindex: INRE through JspSpiUtil.isIncludedOrIncludesSomething(): check for JSP includes should be invoked from pass itself, because it involves some index processing. --- .../daemon/impl/PostHighlightingPass.java | 11 +++++--- .../impl/PostHighlightingPassFactory.java | 26 ++++++++----------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java index df9176e8840f..98ba232a669e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java @@ -83,7 +83,6 @@ public class PostHighlightingPass extends ProgressableTextEditorHighlightingPass private RefCountHolder myRefCountHolder; private final PsiFile myFile; @Nullable private final Editor myEditor; - private final boolean myUnusedImportEnabled; @NotNull private final Predicate myIsEntryPointPredicate; private final int myStartOffset; private final int myEndOffset; @@ -104,12 +103,10 @@ public class PostHighlightingPass extends ProgressableTextEditorHighlightingPass @Nullable Editor editor, @NotNull Document document, @NotNull HighlightInfoProcessor highlightInfoProcessor, - boolean unusedImportEnabled, @NotNull Predicate isEntryPoint) { super(project, document, "Unused symbols", file, editor, file.getTextRange(), true, highlightInfoProcessor); myFile = file; myEditor = editor; - myUnusedImportEnabled = unusedImportEnabled; myIsEntryPointPredicate = isEntryPoint; myStartOffset = 0; myEndOffset = file.getTextLength(); @@ -246,7 +243,7 @@ public class PostHighlightingPass extends ProgressableTextEditorHighlightingPass } } } - if (myUnusedImportEnabled && myFile instanceof PsiJavaFile && HighlightingLevelManager.getInstance(myProject).shouldHighlight(myFile)) { + if (isUnusedImportEnabled(unusedImportKey)) { PsiImportList importList = ((PsiJavaFile)myFile).getImportList(); if (importList != null) { final PsiImportStatementBase[] imports = importList.getAllImportStatements(); @@ -264,6 +261,12 @@ public class PostHighlightingPass extends ProgressableTextEditorHighlightingPass return errorFound; } + protected boolean isUnusedImportEnabled(HighlightDisplayKey unusedImportKey) { + InspectionProfile profile = InspectionProjectProfileManager.getInstance(myProject).getInspectionProfile(); + if (!profile.isToolEnabled(unusedImportKey, myFile)) return false; + return myFile instanceof PsiJavaFile && HighlightingLevelManager.getInstance(myProject).shouldHighlight(myFile); + } + @Nullable private HighlightInfo processIdentifier(@NotNull PsiIdentifier identifier, @NotNull ProgressIndicator progress, @NotNull GlobalUsageHelper helper) { if (SuppressionUtil.inspectionResultSuppressed(identifier, myUnusedSymbolInspection)) return null; diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPassFactory.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPassFactory.java index 54a9bc293478..de13524ce4e5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPassFactory.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPassFactory.java @@ -23,7 +23,6 @@ import com.intellij.codeInsight.daemon.HighlightDisplayKey; import com.intellij.codeInsight.daemon.impl.analysis.HighlightVisitorImpl; import com.intellij.codeInspection.InspectionProfile; import com.intellij.codeInspection.deadCode.UnusedDeclarationInspection; -import com.intellij.codeInspection.unusedImport.UnusedImportLocalInspection; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; @@ -84,32 +83,29 @@ public class PostHighlightingPassFactory extends AbstractProjectComponent implem return create(file, document, null, highlightInfoProcessor); } - private PostHighlightingPass create(@NotNull PsiFile file, + private PostHighlightingPass create(@NotNull final PsiFile file, @NotNull Document document, Editor editor, @NotNull HighlightInfoProcessor highlightInfoProcessor) { - HighlightDisplayKey unusedImportKey = HighlightDisplayKey.find(UnusedImportLocalInspection.SHORT_NAME); InspectionProfile profile = InspectionProjectProfileManager.getInstance(file.getProject()).getInspectionProfile(); - boolean importEnabled = isUnusedImportEnabled(unusedImportKey, file, profile); final UnusedDeclarationInspection myDeadCodeInspection = (UnusedDeclarationInspection)profile.getUnwrappedTool(UnusedDeclarationInspection.SHORT_NAME, file); HighlightDisplayKey myDeadCodeKey = HighlightDisplayKey.find(UnusedDeclarationInspection.SHORT_NAME); final boolean myDeadCodeEnabled = profile.isToolEnabled(myDeadCodeKey, file); - return new PostHighlightingPass(myProject, file, editor, document, highlightInfoProcessor, importEnabled, new Predicate() { + return new PostHighlightingPass(myProject, file, editor, document, highlightInfoProcessor, new Predicate() { @Override public boolean apply(PsiElement member) { return !myDeadCodeEnabled || myDeadCodeInspection.isEntryPoint(member); } - }); + }) { + @Override + protected boolean isUnusedImportEnabled(HighlightDisplayKey unusedImportKey) { + return super.isUnusedImportEnabled(unusedImportKey) && PostHighlightingPassFactory.isUnusedImportEnabled(file); + } + }; } - private static boolean isUnusedImportEnabled(HighlightDisplayKey unusedImportKey, @NotNull PsiFile file, InspectionProfile profile) { - boolean unusedImportEnabled = profile.isToolEnabled(unusedImportKey, file); - if (unusedImportEnabled && JspPsiUtil.isInJspFile(file)) { - final JspFile jspFile = JspPsiUtil.getJspFile(file); - if (jspFile != null) { - unusedImportEnabled = !JspSpiUtil.isIncludedOrIncludesSomething(jspFile); - } - } - return unusedImportEnabled; + private static boolean isUnusedImportEnabled(PsiElement file) { + final JspFile jspFile = JspPsiUtil.getJspFile(file); + return jspFile == null || !JspSpiUtil.isIncludedOrIncludesSomething(jspFile); } }