From 68774609f9dfb6e8045a92b53d02c40b3a5d28c1 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 4 Aug 2023 16:07:41 +0200 Subject: [PATCH] KT-60940 [Analysis API] Small refactoring of `KtFirReferenceShortener` Instead of unwrapping `partiallyResolvedTypeRef` in `processTypeRef`, just visit it with the visitor --- .../api/fir/components/KtFirReferenceShortener.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt index cfb88768c0d..dccb7c4bcc7 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt @@ -380,6 +380,8 @@ private class ElementsToShortenCollector( override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) { visitResolvedTypeRef(errorTypeRef) + + errorTypeRef.partiallyResolvedTypeRef?.accept(this) } override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) { @@ -414,11 +416,7 @@ private class ElementsToShortenCollector( } private fun processTypeRef(resolvedTypeRef: FirResolvedTypeRef) { - val nonErrorResolvedTypeRef = if (resolvedTypeRef is FirErrorTypeRef) { - resolvedTypeRef.partiallyResolvedTypeRef as? FirResolvedTypeRef ?: resolvedTypeRef - } else resolvedTypeRef - - val typeElement = when (val realPsi = nonErrorResolvedTypeRef.realPsi) { + val typeElement = when (val realPsi = resolvedTypeRef.realPsi) { is KtTypeReference -> realPsi.typeElement is KtNameReferenceExpression -> realPsi.parent as? KtTypeElement else -> null @@ -427,7 +425,7 @@ private class ElementsToShortenCollector( if (typeElement.referenceExpression?.textRange?.intersects(selection) != true) return if (typeElement.qualifier == null) return - val classifierId = nonErrorResolvedTypeRef.type.lowerBoundIfFlexible().candidateClassId ?: return + val classifierId = resolvedTypeRef.type.lowerBoundIfFlexible().candidateClassId ?: return findTypeToShorten(classifierId, typeElement)?.let(::addElementToShorten) }