KTIJ-35225 [kotlin] Account for all types of qualified callable symbols in KDocs in Import Optimizer

Before that, only the functions were accounted for by mistake

^KTIJ-35225 Fixed

GitOrigin-RevId: 747cf88412e9d675b2a1d1d0fb0a8387b2564fc8
This commit is contained in:
Roman Golyshev
2025-08-13 16:54:13 +00:00
committed by intellij-monorepo-bot
parent 377757c683
commit afda5f8f45
4 changed files with 20 additions and 2 deletions
@@ -85,7 +85,7 @@ fun KtReference.canBeResolvedViaImport(target: DeclarationDescriptor, bindingCon
if (this is KDocReference) {
val qualifier = element.getQualifier() ?: return true
return if (target.isExtension) {
val elementHasFunctionDescriptor = element.resolveMainReferenceToDescriptors().any { it is FunctionDescriptor }
val elementHasFunctionDescriptor = element.resolveMainReferenceToDescriptors().any { it is CallableDescriptor }
val qualifierHasClassDescriptor = qualifier.resolveMainReferenceToDescriptors().any { it is ClassDescriptor }
elementHasFunctionDescriptor && qualifierHasClassDescriptor
} else {
@@ -0,0 +1,7 @@
package kDocReferences_qualifiedExtensions.dependency
class Foo
fun Foo.extensionFunction() {}
val Foo.extensionProperty: String get() = "extension property"
@@ -0,0 +1,11 @@
package kDocReferences_qualifiedExtensions
import kDocReferences_qualifiedExtensions.dependency.Foo
import kDocReferences_qualifiedExtensions.dependency.extensionFunction
import kDocReferences_qualifiedExtensions.dependency.extensionProperty
/**
* Reference to [Foo.extensionFunction]
* Reference to [Foo.extensionProperty]
*/
fun foo() {}
@@ -211,7 +211,7 @@ private fun canBeResolvedViaImport(reference: KDocReference, target: KaSymbol):
val qualifier = reference.element.getQualifier() ?: return true
return if (target is KaCallableSymbol && target.isExtension) {
val elementHasFunctionDescriptor = reference.element.mainReference.resolveToSymbols().any { it is KaFunctionSymbol }
val elementHasFunctionDescriptor = reference.element.mainReference.resolveToSymbols().any { it is KaCallableSymbol }
val qualifierHasClassDescriptor = qualifier.mainReference.resolveToSymbols().any { it is KaClassLikeSymbol }
elementHasFunctionDescriptor && qualifierHasClassDescriptor
} else {