From ec27f9548492e955f3d478024894f974e12c7b99 Mon Sep 17 00:00:00 2001 From: Dmitry Semeniouta Date: Mon, 18 Jun 2018 16:09:41 +0300 Subject: [PATCH] AC/C++: CPP-13395 EA-121798 - assert: OCSearchScope$.contains --- .../usages/impl/UsageViewManagerImpl.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java index 480787224c9f..30332509cedd 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java @@ -21,6 +21,7 @@ import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.actionSystem.DataSink; import com.intellij.openapi.actionSystem.TypeSafeDataProvider; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; @@ -256,18 +257,22 @@ public class UsageViewManagerImpl extends UsageViewManager { } public static boolean isInScope(@NotNull Usage usage, @NotNull SearchScope searchScope) { - PsiElement element = null; - VirtualFile file = usage instanceof UsageInFile ? ((UsageInFile)usage).getFile() : - usage instanceof PsiElementUsage - ? PsiUtilCore.getVirtualFile(element = ((PsiElementUsage)usage).getElement()) - : null; - if (file != null) { - return isFileInScope(file, searchScope); - } - return element != null && - (searchScope instanceof EverythingGlobalScope || - searchScope instanceof ProjectScopeImpl || - searchScope instanceof ProjectAndLibrariesScope); + Boolean isInScope = ReadAction.compute(() -> { + PsiElement element = null; + VirtualFile file = usage instanceof UsageInFile ? ((UsageInFile)usage).getFile() : + usage instanceof PsiElementUsage + ? PsiUtilCore.getVirtualFile(element = ((PsiElementUsage)usage).getElement()) + : null; + if (file != null) { + return isFileInScope(file, searchScope); + } + return element != null && + (searchScope instanceof EverythingGlobalScope || + searchScope instanceof ProjectScopeImpl || + searchScope instanceof ProjectAndLibrariesScope); + }); + + return isInScope == Boolean.TRUE; } private static boolean isFileInScope(@NotNull VirtualFile file, @NotNull SearchScope searchScope) {