whole file pass: ensure restarted on all files after a change (IDEA-161890)

This commit is contained in:
Anna.Kozlova
2016-09-29 16:03:15 +02:00
parent 94983fe660
commit d9daa533c1
2 changed files with 14 additions and 4 deletions
@@ -586,6 +586,15 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase {
int countAfter = tool.visited.size();
assertTrue(tool.visited.toString(), countAfter > 0);
tool.visited.clear();
//ensure started on another file
configureByExistingFile(otherFile.getVirtualFile());
infos = doHighlighting(HighlightSeverity.WARNING);
assertEmpty(infos);
int countAfter2 = tool.visited.size();
assertTrue(tool.visited.toString(), countAfter2 > 0);
}
public void testOverriddenMethodMarkers() throws Exception {
@@ -51,7 +51,7 @@ import java.util.stream.Collectors;
public class WholeFileLocalInspectionsPassFactory extends AbstractProjectComponent implements TextEditorHighlightingPassFactory {
private final Map<PsiFile, Boolean> myFileToolsCache = ContainerUtil.createConcurrentWeakMap();
private final InspectionProjectProfileManager myProfileManager;
private volatile long myPsiModificationCount;
private final Map<PsiFile, Long> myPsiModificationCount = ContainerUtil.createConcurrentWeakMap();
public WholeFileLocalInspectionsPassFactory(Project project, TextEditorHighlightingPassRegistrar highlightingPassRegistrar,
final InspectionProjectProfileManager profileManager) {
@@ -88,8 +88,9 @@ public class WholeFileLocalInspectionsPassFactory extends AbstractProjectCompone
@Override
@Nullable
public TextEditorHighlightingPass createHighlightingPass(@NotNull final PsiFile file, @NotNull final Editor editor) {
final long psiModificationCount = PsiManager.getInstance(myProject).getModificationTracker().getModificationCount();
if (psiModificationCount == myPsiModificationCount) {
final Long appliedModificationCount = myPsiModificationCount.get(file);
if (appliedModificationCount != null &&
appliedModificationCount == PsiManager.getInstance(myProject).getModificationTracker().getModificationCount()) {
return null; //optimization
}
@@ -126,7 +127,7 @@ public class WholeFileLocalInspectionsPassFactory extends AbstractProjectCompone
@Override
protected void applyInformationWithProgress() {
super.applyInformationWithProgress();
myPsiModificationCount = PsiManager.getInstance(myProject).getModificationTracker().getModificationCount();
myPsiModificationCount.put(file, PsiManager.getInstance(myProject).getModificationTracker().getModificationCount());
}
};
}