From f402daba981b5f0fd6caa90df4ebce670b73cf20 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Mon, 22 Jan 2024 12:30:13 +0100 Subject: [PATCH] KT-65152 [AA] Fix resolve of partial package qualifiers in KDocs ^KT-65152 Fixed --- .../analysis/api/fir/references/KDocReferenceResolver.kt | 6 ++++-- .../testData/referenceResolve/kDoc/packages/longPackage.txt | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KDocReferenceResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KDocReferenceResolver.kt index fd674b7dacd..f39ef207ea0 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KDocReferenceResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KDocReferenceResolver.kt @@ -70,12 +70,14 @@ internal object KDocReferenceResolver { */ context(KtAnalysisSession) private fun findParentSymbol(symbol: KtSymbol, goBackSteps: Int, selectedFqName: FqName): KtSymbol? { - if (symbol !is KtDeclarationSymbol) return null - var currentSymbol: KtDeclarationSymbol? = symbol + if (symbol !is KtDeclarationSymbol && symbol !is KtPackageSymbol) return null + + var currentSymbol = symbol as? KtDeclarationSymbol repeat(goBackSteps) { currentSymbol = currentSymbol?.getContainingSymbol() as? KtClassOrObjectSymbol } currentSymbol?.let { return it } + return getPackageSymbolIfPackageExists(selectedFqName) } diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt index 00f2ada2a66..f31daa5f755 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt @@ -2,16 +2,16 @@ Caret 1 resolved to: 0: package one Caret 2 resolved to: -Nothing (Unresolved reference) +0: package one Caret 3 resolved to: 0: package one.two Caret 4 resolved to: -Nothing (Unresolved reference) +0: package one Caret 5 resolved to: -Nothing (Unresolved reference) +0: package one.two Caret 6 resolved to: 0: package one.two.three