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 6bc23814b977..58fc57720a06 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 @@ -19,6 +19,7 @@ import com.intellij.codeHighlighting.MainHighlightingPassFactory; import com.intellij.codeHighlighting.Pass; import com.intellij.codeHighlighting.TextEditorHighlightingPass; import com.intellij.codeHighlighting.TextEditorHighlightingPassRegistrar; +import com.intellij.codeInsight.daemon.ProblemHighlightFilter; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; @@ -55,7 +56,7 @@ public class PostHighlightingPassFactory extends AbstractProjectComponent implem if (textRange == null) { Long lastStamp = file.getUserData(LAST_POST_PASS_TIMESTAMP); long currentStamp = PsiModificationTracker.SERVICE.getInstance(myProject).getModificationCount(); - if (lastStamp != null && lastStamp == currentStamp) { + if (lastStamp != null && lastStamp == currentStamp || !ProblemHighlightFilter.shouldHighlightFile(file)) { return null; } } diff --git a/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java index 86d2d98ab8e0..2185f4eec7c3 100644 --- a/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java @@ -94,7 +94,7 @@ public abstract class TextEditorHighlightingPass implements HighlightingPass { Document document = getDocument(); PsiFile file = document == null ? null : PsiDocumentManager.getInstance(myProject).getPsiFile(document); if (file != null) { - ((DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject)).getFileStatusMap().markFileUpToDate(getDocument(), file, getId()); + ((DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject)).getFileStatusMap().markFileUpToDate(file.getProject(), getDocument(), getId()); } return; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java index eed2003441d4..08e2b90a61c7 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java @@ -202,7 +202,7 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx setUpdateByTimerEnabled(false); FileStatusMap fileStatusMap = getFileStatusMap(); for (int ignoreId : toIgnore) { - fileStatusMap.markFileUpToDate(document, file, ignoreId); + fileStatusMap.markFileUpToDate(file.getProject(),document, ignoreId); } fileStatusMap.allowDirt(canChangeDocument); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java index 6f7e03c69f80..8b58e3eca74b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java @@ -104,7 +104,7 @@ public class ExternalToolPass extends TextEditorHighlightingPass { @Override public void doApplyInformationToEditor() { DaemonCodeAnalyzer daemonCodeAnalyzer = DaemonCodeAnalyzer.getInstance(myProject); - ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().markFileUpToDate(myDocument, myFile, getId()); + ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().markFileUpToDate(myFile.getProject(),myDocument, getId()); myDocumentListener = new DocumentListener() { @Override diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java index fde01fb6d07c..9f8dc69a1223 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java @@ -167,11 +167,11 @@ public class FileStatusMap implements Disposable { } } - public void markFileUpToDate(@NotNull Document document, @NotNull PsiFile file, int passId) { + public void markFileUpToDate(@NotNull Project project, @NotNull Document document, int passId) { synchronized(myDocumentToStatusMap){ FileStatus status = myDocumentToStatusMap.get(document); if (status == null){ - status = new FileStatus(file.getProject()); + status = new FileStatus(project); myDocumentToStatusMap.put(document, status); } status.defensivelyMarked=false; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java index a45b527af2c8..4148e31ff6b6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java @@ -184,7 +184,6 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP final Set outsideResult = new THashSet(100); DaemonCodeAnalyzer daemonCodeAnalyzer = DaemonCodeAnalyzer.getInstance(myProject); - final FileStatusMap fileStatusMap = ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap(); HighlightVisitor[] highlightVisitors = getHighlightVisitors(); final HighlightVisitor[] filteredVisitors = filterVisitors(highlightVisitors, myFile); final List inside = new ArrayList(); @@ -276,7 +275,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP }, outside, progress, filteredVisitors, gotHighlights, forceHighlightParents); if (myUpdateAll) { - fileStatusMap.setErrorFoundFlag(myDocument, myErrorFound); + ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().setErrorFoundFlag(myDocument, myErrorFound); } } finally { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java index 9f4d4bfd6c05..a3906dce7df0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java @@ -114,10 +114,12 @@ public class LineMarkersPass extends ProgressableTextEditorHighlightingPass impl @NotNull final List result, @NotNull ProgressIndicator progress) throws ProcessCanceledException { ApplicationManager.getApplication().assertReadAccessAllowed(); + //noinspection ForLoopReplaceableByForEach for (int i = 0, elementsSize = elements.size(); i < elementsSize; i++) { PsiElement element = elements.get(i); progress.checkCanceled(); + //noinspection ForLoopReplaceableByForEach for (int j = 0, providersSize = providers.size(); j < providersSize; j++) { LineMarkerProvider provider = providers.get(j); LineMarkerInfo info; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPassFactory.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPassFactory.java index b5398b5451f8..3c2d6b18d9c4 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPassFactory.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPassFactory.java @@ -49,8 +49,7 @@ public class LineMarkersPassFactory extends AbstractProjectComponent implements @Nullable public TextEditorHighlightingPass createHighlightingPass(@NotNull PsiFile file, @NotNull final Editor editor) { TextRange textRange = calculateRangeToProcessForSyntaxPass(editor); - if (textRange == null) return new ProgressableTextEditorHighlightingPass.EmptyPass(myProject, editor.getDocument() - ); + if (textRange == null) return new ProgressableTextEditorHighlightingPass.EmptyPass(myProject, editor.getDocument()); return new LineMarkersPass(myProject, file, editor.getDocument(), textRange.getStartOffset(), textRange.getEndOffset(), true); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPassFactory.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPassFactory.java index 9b867bf58e12..78466e9840ef 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPassFactory.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPassFactory.java @@ -66,9 +66,6 @@ public class LocalInspectionsPassFactory extends AbstractProjectComponent implem @Override public TextEditorHighlightingPass createMainHighlightingPass(@NotNull PsiFile file, @NotNull Document document) { final TextRange textRange = file.getTextRange(); - if (textRange == null) { - return new ProgressableTextEditorHighlightingPass.EmptyPass(myProject, document); - } return new MyLocalInspectionsPass(file, document, textRange, LocalInspectionsPass.EMPTY_PRIORITY_RANGE); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProgressableTextEditorHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProgressableTextEditorHighlightingPass.java index a266c17e9101..32c3705385e9 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProgressableTextEditorHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProgressableTextEditorHighlightingPass.java @@ -66,7 +66,7 @@ public abstract class ProgressableTextEditorHighlightingPass extends TextEditorH myFinished = true; applyInformationWithProgress(); DaemonCodeAnalyzer daemonCodeAnalyzer = DaemonCodeAnalyzer.getInstance(myProject); - ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().markFileUpToDate(myDocument, myFile, getId()); + ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().markFileUpToDate(myFile.getProject(),myDocument, getId()); repaintTrafficIcon(); } @@ -131,12 +131,12 @@ public abstract class ProgressableTextEditorHighlightingPass extends TextEditorH @Override public void doCollectInformation(final ProgressIndicator progress) { - } @Override public void doApplyInformationToEditor() { - + FileStatusMap statusMap = ((DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject)).getFileStatusMap(); + statusMap.markFileUpToDate(myProject, getDocument(), getId()); } } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/SlowLineMarkersPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/SlowLineMarkersPass.java index cd9a702d3b7a..1a777ab1eaba 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/SlowLineMarkersPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/SlowLineMarkersPass.java @@ -84,7 +84,7 @@ public class SlowLineMarkersPass extends TextEditorHighlightingPass implements L UpdateHighlightersUtil.setLineMarkersToEditor(myProject, myDocument, myStartOffset, myEndOffset, myMarkers, getId()); DaemonCodeAnalyzer daemonCodeAnalyzer = DaemonCodeAnalyzer.getInstance(myProject); - ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().markFileUpToDate(myDocument, myFile, getId()); + ((DaemonCodeAnalyzerImpl)daemonCodeAnalyzer).getFileStatusMap().markFileUpToDate(myFile.getProject(),myDocument, getId()); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.java index 81c50ca52c3f..71d3fd62954d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.java @@ -78,7 +78,7 @@ public class TextEditorBackgroundHighlighter implements BackgroundEditorHighligh } } - public List getPasses(int[] passesToIgnore) { + public List getPasses(@NotNull int[] passesToIgnore) { if (myProject.isDisposed()) return Collections.emptyList(); PsiDocumentManager.getInstance(myProject).commitAllDocuments(); renewFile(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorHighlightingPassRegistrarImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorHighlightingPassRegistrarImpl.java index a49121d038b3..3ce87fca7753 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorHighlightingPassRegistrarImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorHighlightingPassRegistrarImpl.java @@ -153,7 +153,7 @@ public class TextEditorHighlightingPassRegistrarImpl extends TextEditorHighlight passesRefusedToCreate.forEach(new TIntProcedure() { @Override public boolean execute(int passId) { - statusMap.markFileUpToDate(document, psiFile, passId); + statusMap.markFileUpToDate(psiFile.getProject(),document, passId); return true; } });