diff options
Diffstat (limited to 'java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaAllOverridingMethodsSearcher.java')
-rw-r--r-- | java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaAllOverridingMethodsSearcher.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaAllOverridingMethodsSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaAllOverridingMethodsSearcher.java index 35ec8b2800e7..f8f824b77c95 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaAllOverridingMethodsSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaAllOverridingMethodsSearcher.java @@ -15,6 +15,8 @@ */ package com.intellij.psi.impl.search; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; import com.intellij.psi.search.SearchScope; @@ -39,11 +41,18 @@ public class JavaAllOverridingMethodsSearcher implements QueryExecutor<Pair<PsiM public boolean execute(@NotNull final AllOverridingMethodsSearch.SearchParameters p, @NotNull final Processor<Pair<PsiMethod, PsiMethod>> consumer) { final PsiClass psiClass = p.getPsiClass(); - PsiMethod[] methodsArray = psiClass.getMethods(); - final List<PsiMethod> methods = new ArrayList<PsiMethod>(methodsArray.length); - for (PsiMethod method : methodsArray) { - if (PsiUtil.canBeOverriden(method)) methods.add(method); - } + final List<PsiMethod> methods = ApplicationManager.getApplication().runReadAction(new Computable<List<PsiMethod>>() { + @Override + public List<PsiMethod> compute() { + PsiMethod[] methodsArray = psiClass.getMethods(); + final List<PsiMethod> methods = new ArrayList<PsiMethod>(methodsArray.length); + for (PsiMethod method : methodsArray) { + if (PsiUtil.canBeOverriden(method)) methods.add(method); + } + return methods; + } + }); + final SearchScope scope = p.getScope(); |