From 1095c51d6a16fda3a9c54d4c9b3101d6e115f17c Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 5 Dec 2013 16:50:14 +0400 Subject: [PATCH] Reimplement "Find Usages" using KotlinClassInheritorsSearch --- .../KotlinFindClassUsagesHandler.java | 38 ++++++++----------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java b/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java index 495311ffc09..e570fe32e53 100644 --- a/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java @@ -21,13 +21,11 @@ import com.intellij.find.findUsages.FindUsagesOptions; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.Computable; -import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.search.PsiElementProcessorAdapter; -import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.usageView.UsageInfo; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; @@ -38,6 +36,9 @@ import org.jetbrains.jet.plugin.findUsages.FindUsagesPackage; import org.jetbrains.jet.plugin.findUsages.KotlinClassFindUsagesOptions; import org.jetbrains.jet.plugin.findUsages.KotlinFindUsagesHandlerFactory; import org.jetbrains.jet.plugin.findUsages.dialogs.KotlinFindClassUsagesDialog; +import org.jetbrains.jet.plugin.search.declarationsSearch.DeclarationsSearchPackage; +import org.jetbrains.jet.plugin.search.declarationsSearch.HierarchySearchRequest; +import org.jetbrains.jet.plugin.search.declarationsSearch.KotlinClassInheritorsSearch; import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearch; import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchRequest; import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchTarget; @@ -84,10 +85,7 @@ public class KotlinFindClassUsagesHandler extends KotlinFindUsagesHandler processor, @NotNull final KotlinClassFindUsagesOptions options ) { - //noinspection unchecked - ClassInheritorsSearch.SearchParameters searchParameters = new ClassInheritorsSearch.SearchParameters( - klass, options.searchScope, options.isCheckDeepInheritance, true, true, Condition.TRUE, INHERITANCE_CHECKER + HierarchySearchRequest request = new HierarchySearchRequest( + classOrObject, options.searchScope, options.isCheckDeepInheritance ); - return ClassInheritorsSearch.search(searchParameters).forEach( - new PsiElementProcessorAdapter( - new PsiElementProcessor() { + return KotlinClassInheritorsSearch.instance$.search(request).forEach( + new PsiElementProcessorAdapter( + new PsiElementProcessor() { @Override - public boolean execute(@NotNull PsiClass element) { - if ((element.isInterface() && options.isDerivedInterfaces) - || (!element.isInterface() && options.isDerivedClasses)) { + public boolean execute(@NotNull PsiElement element) { + boolean traitOrInterface = DeclarationsSearchPackage.isTraitOrInterface(element); + + if ((traitOrInterface && options.isDerivedInterfaces) || (!traitOrInterface && options.isDerivedClasses)) { return processUsage(processor, element); } + return true; } }