From a82fbe461a2f5870bd25c0ee66b91d316fb53cd9 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 2 Sep 2024 19:34:48 +0200 Subject: [PATCH] [kotlin] do not try to search Java inheritors from `FirIdeKotlinDirectInheritorsProvider` We will still filter them out later This way we will avoid creating LC when not needed ^KTIJ-31171 fixed GitOrigin-RevId: d5040c5091962956c9950a2ac00439c72a13aefe --- .../analysisApiPlatform/FirIdeKotlinDirectInheritorsProvider.kt | 1 + .../searching/inheritors/DirectKotlinClassDelegatedSearcher.kt | 1 + .../searching/inheritors/DirectKotlinClassInheritorsSearch.kt | 1 + 3 files changed, 3 insertions(+) diff --git a/plugins/kotlin/base/fir/analysis-api-platform/src/org/jetbrains/kotlin/idea/base/fir/analysisApiPlatform/FirIdeKotlinDirectInheritorsProvider.kt b/plugins/kotlin/base/fir/analysis-api-platform/src/org/jetbrains/kotlin/idea/base/fir/analysisApiPlatform/FirIdeKotlinDirectInheritorsProvider.kt index 48faa93c7d3b..14933ae75c75 100644 --- a/plugins/kotlin/base/fir/analysis-api-platform/src/org/jetbrains/kotlin/idea/base/fir/analysisApiPlatform/FirIdeKotlinDirectInheritorsProvider.kt +++ b/plugins/kotlin/base/fir/analysis-api-platform/src/org/jetbrains/kotlin/idea/base/fir/analysisApiPlatform/FirIdeKotlinDirectInheritorsProvider.kt @@ -31,6 +31,7 @@ class FirIdeKotlinDirectInheritorsProvider : KotlinDirectInheritorsProvider { ktClass = ktClass, searchScope = kotlinOnlyScope, includeLocal = includeLocalInheritors, + searchOnlyInKotlin = true, ) return DirectKotlinClassInheritorsSearch.search(searchParameters).filterIsInstance().toList() diff --git a/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassDelegatedSearcher.kt b/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassDelegatedSearcher.kt index 8358f8f9a21e..89b7edc12f50 100644 --- a/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassDelegatedSearcher.kt +++ b/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassDelegatedSearcher.kt @@ -22,6 +22,7 @@ private val EVERYTHING_BUT_KOTLIN = object : QueryFactory { @RequiresReadLock override fun collectSearchRequest(parameters: DirectKotlinClassInheritorsSearch.SearchParameters): Query? { + if (parameters.searchOnlyInKotlin) return null val baseClass = parameters.ktClass if (baseClass.isEnum()) { //enum inheritors may be found in the same class only, kotlin class diff --git a/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassInheritorsSearch.kt b/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassInheritorsSearch.kt index eb7bc9d4051a..f8d624efb8a8 100644 --- a/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassInheritorsSearch.kt +++ b/plugins/kotlin/kotlin.searching/src/org/jetbrains/kotlin/idea/searching/inheritors/DirectKotlinClassInheritorsSearch.kt @@ -23,6 +23,7 @@ object DirectKotlinClassInheritorsSearch { val searchScope: SearchScope, val includeAnonymous: Boolean = true, val includeLocal: Boolean = true, + val searchOnlyInKotlin: Boolean = false, ) : com.intellij.model.search.SearchParameters { override fun getProject(): Project { return runReadAction { ktClass.project }