Added read action wrapper
#KT-4268 Fixed
This commit is contained in:
+36
-29
@@ -141,41 +141,48 @@ public abstract class KotlinFindMemberUsagesHandler<T extends JetNamedDeclaratio
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean searchReferences(
|
protected boolean searchReferences(
|
||||||
@NotNull final PsiElement element, @NotNull final Processor<UsageInfo> processor, @NotNull FindUsagesOptions options
|
@NotNull final PsiElement element, @NotNull final Processor<UsageInfo> processor, @NotNull final FindUsagesOptions options
|
||||||
) {
|
) {
|
||||||
KotlinCallableFindUsagesOptions kotlinOptions = (KotlinCallableFindUsagesOptions) options;
|
return ApplicationManager.getApplication().runReadAction(
|
||||||
|
new Computable<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean compute() {
|
||||||
|
KotlinCallableFindUsagesOptions kotlinOptions = (KotlinCallableFindUsagesOptions) options;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
UsagesSearchRequest request =
|
UsagesSearchRequest request =
|
||||||
getSearchHelper(kotlinOptions).newRequest(FindUsagesPackage.toSearchTarget(options, (T) element, true));
|
getSearchHelper(kotlinOptions).newRequest(FindUsagesPackage.toSearchTarget(options, (T) element, true));
|
||||||
|
|
||||||
for (PsiReference ref : UsagesSearch.instance$.search(request)) {
|
for (PsiReference ref : UsagesSearch.instance$.search(request)) {
|
||||||
processUsage(processor, ref);
|
processUsage(processor, ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator<PsiMethod> lightMethods = ApplicationManager.getApplication().runReadAction(new Computable<Iterator<PsiMethod>>() {
|
Iterator<PsiMethod> lightMethods = ApplicationManager.getApplication().runReadAction(new Computable<Iterator<PsiMethod>>() {
|
||||||
@Override
|
@Override
|
||||||
public Iterator<PsiMethod> compute() {
|
public Iterator<PsiMethod> compute() {
|
||||||
return getLightMethods((JetNamedDeclaration) element).iterator();
|
return getLightMethods((JetNamedDeclaration) element).iterator();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (kotlinOptions.getSearchOverrides()) {
|
if (kotlinOptions.getSearchOverrides()) {
|
||||||
while (lightMethods.hasNext()) {
|
while (lightMethods.hasNext()) {
|
||||||
OverridingMethodsSearch.search(lightMethods.next(), options.searchScope, true).forEach(
|
OverridingMethodsSearch.search(lightMethods.next(), options.searchScope, true).forEach(
|
||||||
new PsiElementProcessorAdapter<PsiMethod>(
|
new PsiElementProcessorAdapter<PsiMethod>(
|
||||||
new PsiElementProcessor<PsiMethod>() {
|
new PsiElementProcessor<PsiMethod>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(@NotNull PsiMethod element) {
|
public boolean execute(@NotNull PsiMethod element) {
|
||||||
return processUsage(processor, element.getNavigationElement());
|
return processUsage(processor, element.getNavigationElement());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user