[kotlin] k2: search for inheritors in one go

KTIJ-28077

GitOrigin-RevId: 4be01dec5d088837382e79b31ec1d1428bea7ecc
This commit is contained in:
Anna Kozlova
2023-12-11 18:18:38 +01:00
committed by intellij-monorepo-bot
parent de6d62ddab
commit c1a96c8baf

View File

@@ -172,15 +172,18 @@ class KotlinFirSafeDeleteProcessor : SafeDeleteProcessorDelegateBase() {
if (ktElement is KtConstructor<*>) {
val containingClass = ktElement.containingClass() ?: return
val directInheritors = DirectKotlinClassInheritorsSearch.search(containingClass).findAll()
if (directInheritors.any { it !is KtElement }) {
val lightMethod = ktElement.toLightMethods().filterIsInstance<KtLightMethod>().firstOrNull() ?: return
MethodReferencesSearch.search(lightMethod, lightMethod.useScope, true).forEach(Processor {
JavaSafeDeleteDelegate.EP.forLanguage(it.element.language)
?.createUsageInfoForParameter(it, result, element, parameterIndexAsJavaCall, element.isVarArg)
return@Processor true
})
return
val directInheritors = mutableListOf<KtElement>()
DirectKotlinClassInheritorsSearch.search(containingClass).forEach { el ->
if (el !is KtElement) {
val lightMethod = ktElement.toLightMethods().filterIsInstance<KtLightMethod>().firstOrNull() ?: return
MethodReferencesSearch.search(lightMethod, lightMethod.useScope, true).forEach(Processor {
JavaSafeDeleteDelegate.EP.forLanguage(it.element.language)
?.createUsageInfoForParameter(it, result, element, parameterIndexAsJavaCall, element.isVarArg)
return@Processor true
})
return
}
directInheritors.add(el)
}
fun processDelegatingReferences(ktClass: KtClass) {