mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-121510 JSP: reindex: INRE through JspSpiUtil.isIncludedOrIncludesSomething(): check for JSP includes should be invoked from pass itself, because it involves some index processing.
This commit is contained in:
+7
-4
@@ -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<PsiElement> 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<PsiElement> 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;
|
||||
|
||||
+11
-15
@@ -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<PsiElement>() {
|
||||
return new PostHighlightingPass(myProject, file, editor, document, highlightInfoProcessor, new Predicate<PsiElement>() {
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user