From ff7af9cbc09356f78fc5e8e78f830d6844dc1440 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 27 May 2015 16:12:07 +0200 Subject: [PATCH] SSR: perform getContainingFile inside read action (EA-68844) --- .../impl/matcher/MatcherImpl.java | 50 ++++++++----------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImpl.java b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImpl.java index 19a10a7cd44c..24ced0f83d15 100644 --- a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImpl.java +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImpl.java @@ -313,13 +313,7 @@ public class MatcherImpl { final PsiElement psiElement = elementsToScan[i]; if (psiElement == null) continue; - final Language language = psiElement.getLanguage(); - - PsiFile file = psiElement instanceof PsiFile ? (PsiFile)psiElement : psiElement.getContainingFile(); - - //if (profile.isMyFile(file, language, patternLanguage, patternLanguage2)) { - scheduler.addOneTask(new MatchOnePsiFile(psiElement)); - //} + scheduler.addOneTask(new MatchOnePsiFile(psiElement)); if (ourOptimizedScope) elementsToScan[i] = null; // to prevent long PsiElement reference } } @@ -546,30 +540,28 @@ public class MatcherImpl { ++scannedFilesCount; if (files.size() == 0) return; - final PsiFile psiFile = files.get(0).getContainingFile(); - if (psiFile!=null) { - final Runnable action = new Runnable() { - public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - if (project.isDisposed()) return; - final PsiDocumentManager manager = PsiDocumentManager.getInstance(project); - final Document document = manager.getDocument(psiFile); - if (document != null) manager.commitDocument(document); - } - }); - } - }; - - if (ApplicationManager.getApplication().isDispatchThread()) { - action.run(); - } else { - ApplicationManager.getApplication().invokeAndWait( - action, - ModalityState.defaultModalityState() - ); + final Runnable action = new Runnable() { + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + if (project.isDisposed()) return; + final PsiFile psiFile = files.get(0).getContainingFile(); + final PsiDocumentManager manager = PsiDocumentManager.getInstance(project); + final Document document = manager.getDocument(psiFile); + if (document != null) manager.commitDocument(document); + } + }); } + }; + + if (ApplicationManager.getApplication().isDispatchThread()) { + action.run(); + } else { + ApplicationManager.getApplication().invokeAndWait( + action, + ModalityState.defaultModalityState() + ); } if (project.isDisposed()) return;