mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java & python: use effective search scope instead of the user-defined one
add read action
This commit is contained in:
+9
-2
@@ -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<PsiReference, ReferencesSearch.SearchParameters> {
|
||||
@Override
|
||||
public void processQuery(@NotNull ReferencesSearch.SearchParameters p, @NotNull Processor<PsiReference> consumer) {
|
||||
public void processQuery(@NotNull final ReferencesSearch.SearchParameters p, @NotNull Processor<PsiReference> consumer) {
|
||||
final PsiElement element = p.getElementToSearch();
|
||||
if (!(element instanceof PsiMethod)) {
|
||||
return;
|
||||
@@ -31,7 +32,13 @@ public class ConstructorReferencesSearcher extends QueryExecutorBase<PsiReferenc
|
||||
if (manager[0] == null) {
|
||||
return;
|
||||
}
|
||||
SearchScope scope = ApplicationManager.getApplication().runReadAction(new Computable<SearchScope>() {
|
||||
@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());
|
||||
}
|
||||
}
|
||||
|
||||
+8
-1
@@ -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<PsiR
|
||||
}
|
||||
});
|
||||
if (containingClass != null) {
|
||||
final Query<PsiReference> query = ReferencesSearch.search(containingClass, p.getEffectiveSearchScope(), p.isIgnoreAccessScope());
|
||||
SearchScope scope = ApplicationManager.getApplication().runReadAction(new Computable<SearchScope>() {
|
||||
@Override
|
||||
public SearchScope compute() {
|
||||
return p.getEffectiveSearchScope();
|
||||
}
|
||||
});
|
||||
final Query<PsiReference> query = ReferencesSearch.search(containingClass, scope, p.isIgnoreAccessScope());
|
||||
return query.forEach(createImplicitDefaultAnnotationMethodConsumer(consumer));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user