From bcd6a54ffb5db3457667493b52b547f3d22c0b4d Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 29 Jul 2022 17:12:57 +0200 Subject: [PATCH] [Analysis API FIR] Fix small mistake in `KDocReferenceResolver` `owner` is a PSI element, it can never be an instance of `KtConstructorSymbol` Also, make `MutableCollection` an extension receiver instead of context receiver for the consistency --- .../api/fir/references/KDocReferenceResolver.kt | 16 ++++++++-------- .../kDoc/parameters/ConstructorValueParameter.kt | 4 ---- 2 files changed, 8 insertions(+), 12 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 fdc6620a631..7de5603d8d3 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 @@ -27,12 +27,12 @@ internal object KDocReferenceResolver { val pathSegments = fqName.pathSegments() if (pathSegments.size == 1) { val singleSegment = pathSegments.single() - when { - owner is KtConstructorSymbol -> { - collectConstructorParameterSymbols(owner, singleSegment) + when (ownerSymbol) { + is KtConstructorSymbol -> { + collectConstructorParameterSymbols(ownerSymbol, singleSegment) } - ownerSymbol is KtNamedClassOrObjectSymbol -> { + is KtNamedClassOrObjectSymbol -> { collectPrimaryConstructorParameterSymbols(ownerSymbol, singleSegment) } } @@ -65,8 +65,8 @@ internal object KDocReferenceResolver { addAll(scope.getClassifierSymbols { it == shortName }) } - context(KtAnalysisSession, MutableCollection) - private fun collectConstructorParameterSymbols(owner: KtFunctionLikeSymbol, name: Name) { + context(KtAnalysisSession) + private fun MutableCollection.collectConstructorParameterSymbols(owner: KtFunctionLikeSymbol, name: Name) { for (valueParameter in owner.valueParameters) { if (valueParameter.name == name) { add(valueParameter) @@ -105,8 +105,8 @@ internal object KDocReferenceResolver { getPackageSymbolIfPackageExists(packageFqName)?.let(::add) } - context(KtAnalysisSession, MutableCollection) - private fun collectSymbolsByClassId(classId: ClassId) { + context(KtAnalysisSession) + private fun MutableCollection.collectSymbolsByClassId(classId: ClassId) { classId.getCorrespondingToplevelClassOrObjectSymbol()?.let(::add) } diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/parameters/ConstructorValueParameter.kt b/analysis/analysis-api/testData/referenceResolve/kDoc/parameters/ConstructorValueParameter.kt index 71928943479..2a01b9274b2 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/parameters/ConstructorValueParameter.kt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/parameters/ConstructorValueParameter.kt @@ -1,7 +1,3 @@ -// TODO -// UNRESOLVED_REFERENCE - - class C { /** * [aa]