KT-60940 [Analysis API] Small refactoring of KtFirReferenceShortener

Instead of unwrapping `partiallyResolvedTypeRef` in `processTypeRef`,
just visit it with the visitor
This commit is contained in:
Roman Golyshev
2023-08-04 16:07:41 +02:00
committed by teamcity
parent a1250e838b
commit 68774609f9
@@ -380,6 +380,8 @@ private class ElementsToShortenCollector(
override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) { override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) {
visitResolvedTypeRef(errorTypeRef) visitResolvedTypeRef(errorTypeRef)
errorTypeRef.partiallyResolvedTypeRef?.accept(this)
} }
override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) { override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
@@ -414,11 +416,7 @@ private class ElementsToShortenCollector(
} }
private fun processTypeRef(resolvedTypeRef: FirResolvedTypeRef) { private fun processTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
val nonErrorResolvedTypeRef = if (resolvedTypeRef is FirErrorTypeRef) { val typeElement = when (val realPsi = resolvedTypeRef.realPsi) {
resolvedTypeRef.partiallyResolvedTypeRef as? FirResolvedTypeRef ?: resolvedTypeRef
} else resolvedTypeRef
val typeElement = when (val realPsi = nonErrorResolvedTypeRef.realPsi) {
is KtTypeReference -> realPsi.typeElement is KtTypeReference -> realPsi.typeElement
is KtNameReferenceExpression -> realPsi.parent as? KtTypeElement is KtNameReferenceExpression -> realPsi.parent as? KtTypeElement
else -> null else -> null
@@ -427,7 +425,7 @@ private class ElementsToShortenCollector(
if (typeElement.referenceExpression?.textRange?.intersects(selection) != true) return if (typeElement.referenceExpression?.textRange?.intersects(selection) != true) return
if (typeElement.qualifier == null) 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) findTypeToShorten(classifierId, typeElement)?.let(::addElementToShorten)
} }