Fix resolving of packages in FQN kdoc links
Assume link [pack.SomeType], pack no more will be marked as unresolved reference
This commit is contained in:
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
|||||||
import org.jetbrains.kotlin.idea.util.getFileResolutionScope
|
import org.jetbrains.kotlin.idea.util.getFileResolutionScope
|
||||||
import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag
|
import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag
|
||||||
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
|
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||||
import org.jetbrains.kotlin.psi.KtQualifiedExpression
|
import org.jetbrains.kotlin.psi.KtQualifiedExpression
|
||||||
@@ -48,11 +49,15 @@ fun resolveKDocLink(context: BindingContext,
|
|||||||
val scope = getKDocLinkResolutionScope(resolutionFacade, fromDescriptor)
|
val scope = getKDocLinkResolutionScope(resolutionFacade, fromDescriptor)
|
||||||
|
|
||||||
if (qualifiedName.size == 1) {
|
if (qualifiedName.size == 1) {
|
||||||
val descriptorsByName = scope.collectDescriptorsFiltered(nameFilter = { it.asString() == qualifiedName.single() })
|
val shortName = qualifiedName.single()
|
||||||
|
val descriptorsByName = scope.collectDescriptorsFiltered(nameFilter = { it.asString() == shortName })
|
||||||
// Try to find a matching local descriptor (parameter or type parameter) first.
|
// Try to find a matching local descriptor (parameter or type parameter) first.
|
||||||
val localDescriptors = descriptorsByName.filter { it.containingDeclaration == fromDescriptor }
|
val localDescriptors = descriptorsByName.filter { it.containingDeclaration == fromDescriptor }
|
||||||
if (localDescriptors.isNotEmpty()) return localDescriptors
|
if (localDescriptors.isNotEmpty()) return localDescriptors
|
||||||
return descriptorsByName
|
if (descriptorsByName.isNotEmpty()) return descriptorsByName
|
||||||
|
|
||||||
|
val moduleDescriptor = fromDescriptor.module
|
||||||
|
return moduleDescriptor.getSubPackagesOf(FqName.ROOT, { it.asString() == shortName }).map { moduleDescriptor.getPackage(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
val moduleDescriptor = fromDescriptor.module
|
val moduleDescriptor = fromDescriptor.module
|
||||||
|
|||||||
Reference in New Issue
Block a user