KotlinDirectInheritorsSearcher: exclude library source from search

This commit is contained in:
Pavel V. Talanov
2014-12-10 16:00:35 +03:00
parent 063870d4de
commit 08241f508e
@@ -28,6 +28,7 @@ import org.jetbrains.jet.plugin.stubindex.JetSuperClassIndex
import org.jetbrains.jet.lang.resolve.*
import java.util.Collections
import org.jetbrains.jet.plugin.search.fileScope
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope
public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase<PsiClass, DirectClassInheritorsSearch.SearchParameters>(true) {
public override fun processQuery(queryParameters: DirectClassInheritorsSearch.SearchParameters, consumer: Processor<PsiClass>) {
@@ -46,7 +47,8 @@ public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase<PsiClass,
if (scope == null) return
ApplicationManager.getApplication()?.runReadAction {
JetSuperClassIndex.getInstance().get(name, baseClass.getProject(), scope).stream()
val noLibrarySourceScope = JetSourceFilterScope.kotlinSourceAndClassFiles(scope, baseClass.getProject())
JetSuperClassIndex.getInstance().get(name, baseClass.getProject(), noLibrarySourceScope).stream()
.map { candidate -> JetSourceNavigationHelper.getOriginalPsiClassOrCreateLightClass(candidate)}
.filterNotNull()
.filter { candidate -> candidate.isInheritor(baseClass, false) }