From 619c2df766407739c7876af018826b68144a7220 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 2 Dec 2014 18:29:32 +0100 Subject: [PATCH] java & python: use effective search scope instead of the user-defined one add read action --- .../impl/search/ConstructorReferencesSearcher.java | 11 +++++++++-- .../PsiAnnotationMethodReferencesSearcher.java | 9 ++++++++- .../psi/search/PyKeywordArgumentSearchExecutor.java | 13 +++++++++++-- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/ConstructorReferencesSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/ConstructorReferencesSearcher.java index 57de225c060a..1c48c5c5c367 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/ConstructorReferencesSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/ConstructorReferencesSearcher.java @@ -4,6 +4,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.QueryExecutorBase; import com.intellij.openapi.util.Computable; import com.intellij.psi.*; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; @@ -13,7 +14,7 @@ import org.jetbrains.annotations.NotNull; */ public class ConstructorReferencesSearcher extends QueryExecutorBase { @Override - public void processQuery(@NotNull ReferencesSearch.SearchParameters p, @NotNull Processor consumer) { + public void processQuery(@NotNull final ReferencesSearch.SearchParameters p, @NotNull Processor consumer) { final PsiElement element = p.getElementToSearch(); if (!(element instanceof PsiMethod)) { return; @@ -31,7 +32,13 @@ public class ConstructorReferencesSearcher extends QueryExecutorBase() { + @Override + public SearchScope compute() { + return p.getEffectiveSearchScope(); + } + }); new ConstructorReferencesSearchHelper(manager[0]) - .processConstructorReferences(consumer, method, aClass, p.getEffectiveSearchScope(), p.isIgnoreAccessScope(), true, p.getOptimizer()); + .processConstructorReferences(consumer, method, aClass, scope, p.isIgnoreAccessScope(), true, p.getOptimizer()); } } diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/PsiAnnotationMethodReferencesSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/PsiAnnotationMethodReferencesSearcher.java index 3ccabaa0de2e..f723bc2d9e4b 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/PsiAnnotationMethodReferencesSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/PsiAnnotationMethodReferencesSearcher.java @@ -18,6 +18,7 @@ package com.intellij.psi.impl.search; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.Computable; import com.intellij.psi.*; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiUtil; import com.intellij.util.Processor; @@ -50,7 +51,13 @@ public class PsiAnnotationMethodReferencesSearcher implements QueryExecutor query = ReferencesSearch.search(containingClass, p.getEffectiveSearchScope(), p.isIgnoreAccessScope()); + SearchScope scope = ApplicationManager.getApplication().runReadAction(new Computable() { + @Override + public SearchScope compute() { + return p.getEffectiveSearchScope(); + } + }); + final Query query = ReferencesSearch.search(containingClass, scope, p.isIgnoreAccessScope()); return query.forEach(createImplicitDefaultAnnotationMethodConsumer(consumer)); } } diff --git a/python/src/com/jetbrains/python/psi/search/PyKeywordArgumentSearchExecutor.java b/python/src/com/jetbrains/python/psi/search/PyKeywordArgumentSearchExecutor.java index 10a7b86f21c5..135a4b908bbf 100644 --- a/python/src/com/jetbrains/python/psi/search/PyKeywordArgumentSearchExecutor.java +++ b/python/src/com/jetbrains/python/psi/search/PyKeywordArgumentSearchExecutor.java @@ -15,9 +15,12 @@ */ package com.jetbrains.python.psi.search; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.QueryExecutorBase; +import com.intellij.openapi.util.Computable; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.Processor; @@ -31,7 +34,7 @@ import org.jetbrains.annotations.NotNull; */ public class PyKeywordArgumentSearchExecutor extends QueryExecutorBase { @Override - public void processQuery(@NotNull ReferencesSearch.SearchParameters queryParameters, @NotNull final Processor consumer) { + public void processQuery(@NotNull final ReferencesSearch.SearchParameters queryParameters, @NotNull final Processor consumer) { final PsiElement element = queryParameters.getElementToSearch(); if (!(element instanceof PyNamedParameter)) { return; @@ -40,7 +43,13 @@ public class PyKeywordArgumentSearchExecutor extends QueryExecutorBase() { + SearchScope scope = ApplicationManager.getApplication().runReadAction(new Computable() { + @Override + public SearchScope compute() { + return queryParameters.getEffectiveSearchScope(); + } + }); + ReferencesSearch.search(owner, scope).forEach(new Processor() { @Override public boolean process(PsiReference reference) { final PsiElement refElement = reference.getElement();