Use overriders search in "Find Usages"
This commit is contained in:
+13
-19
@@ -26,7 +26,6 @@ import com.intellij.psi.PsiMethod;
|
|||||||
import com.intellij.psi.PsiReference;
|
import com.intellij.psi.PsiReference;
|
||||||
import com.intellij.psi.search.PsiElementProcessor;
|
import com.intellij.psi.search.PsiElementProcessor;
|
||||||
import com.intellij.psi.search.PsiElementProcessorAdapter;
|
import com.intellij.psi.search.PsiElementProcessorAdapter;
|
||||||
import com.intellij.psi.search.searches.OverridingMethodsSearch;
|
|
||||||
import com.intellij.usageView.UsageInfo;
|
import com.intellij.usageView.UsageInfo;
|
||||||
import com.intellij.util.Processor;
|
import com.intellij.util.Processor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -39,6 +38,8 @@ import org.jetbrains.jet.lang.psi.JetProperty;
|
|||||||
import org.jetbrains.jet.plugin.findUsages.*;
|
import org.jetbrains.jet.plugin.findUsages.*;
|
||||||
import org.jetbrains.jet.plugin.findUsages.dialogs.KotlinFindFunctionUsagesDialog;
|
import org.jetbrains.jet.plugin.findUsages.dialogs.KotlinFindFunctionUsagesDialog;
|
||||||
import org.jetbrains.jet.plugin.findUsages.dialogs.KotlinFindPropertyUsagesDialog;
|
import org.jetbrains.jet.plugin.findUsages.dialogs.KotlinFindPropertyUsagesDialog;
|
||||||
|
import org.jetbrains.jet.plugin.search.declarationsSearch.DeclarationsSearchPackage;
|
||||||
|
import org.jetbrains.jet.plugin.search.declarationsSearch.HierarchySearchRequest;
|
||||||
import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearch;
|
import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearch;
|
||||||
import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchHelper;
|
import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchHelper;
|
||||||
import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchRequest;
|
import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchRequest;
|
||||||
@@ -157,26 +158,19 @@ public abstract class KotlinFindMemberUsagesHandler<T extends JetNamedDeclaratio
|
|||||||
processUsage(processor, ref);
|
processUsage(processor, ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator<PsiMethod> lightMethods = ApplicationManager.getApplication().runReadAction(new Computable<Iterator<PsiMethod>>() {
|
|
||||||
@Override
|
|
||||||
public Iterator<PsiMethod> compute() {
|
|
||||||
return getLightMethods((JetNamedDeclaration) element).iterator();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (kotlinOptions.getSearchOverrides()) {
|
if (kotlinOptions.getSearchOverrides()) {
|
||||||
while (lightMethods.hasNext()) {
|
DeclarationsSearchPackage.searchOverriders(
|
||||||
OverridingMethodsSearch.search(lightMethods.next(), options.searchScope, true).forEach(
|
new HierarchySearchRequest<PsiElement>(element, options.searchScope, true)
|
||||||
new PsiElementProcessorAdapter<PsiMethod>(
|
).forEach(
|
||||||
new PsiElementProcessor<PsiMethod>() {
|
new PsiElementProcessorAdapter<PsiMethod>(
|
||||||
@Override
|
new PsiElementProcessor<PsiMethod>() {
|
||||||
public boolean execute(@NotNull PsiMethod element) {
|
@Override
|
||||||
return processUsage(processor, element.getNavigationElement());
|
public boolean execute(@NotNull PsiMethod method) {
|
||||||
}
|
return processUsage(processor, method.getNavigationElement());
|
||||||
}
|
}
|
||||||
)
|
}
|
||||||
);
|
)
|
||||||
}
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user