KT-62675 [AA] Get rid of second override of ElementsToShortenCollector.addElementToShorten

Those two overrides were odd - one of them was deconstructing
`ElementToShorten` into its fields, and the other one was
re-constructing it back
This commit is contained in:
Roman Golyshev
2023-11-16 13:01:32 +01:00
committed by teamcity
parent 12fbc3384e
commit d47557067c
@@ -380,19 +380,20 @@ private class FirShorteningContext(val analysisSession: KtFirAnalysisSession) {
}
private sealed class ElementToShorten {
abstract val element: KtElement
abstract val nameToImport: FqName?
abstract val importAllInParent: Boolean
}
private class ShortenType(
val element: KtUserType,
override val element: KtUserType,
val shortenedRef: String? = null,
override val nameToImport: FqName? = null,
override val importAllInParent: Boolean = false,
) : ElementToShorten()
private class ShortenQualifier(
val element: KtDotQualifiedExpression,
override val element: KtDotQualifiedExpression,
val shortenedRef: String? = null,
override val nameToImport: FqName? = null,
override val importAllInParent: Boolean = false
@@ -845,10 +846,16 @@ private class ElementsToShortenCollector(
private fun createElementToShorten(
element: KtElement,
nameToImport: FqName? = null,
referencedSymbol: FqName? = null,
importAllInParent: Boolean = false,
shortenedRef: String? = null,
): ElementToShorten {
var nameToImport = if (importAllInParent) {
referencedSymbol?.parentOrNull() ?: error("Provided FqName '$referencedSymbol' cannot be imported with a star")
} else {
referencedSymbol
}
return when (element) {
is KtUserType -> ShortenType(element, shortenedRef, nameToImport, importAllInParent)
is KtDotQualifiedExpression -> ShortenQualifier(element, shortenedRef, nameToImport, importAllInParent)
@@ -1232,37 +1239,17 @@ private class ElementsToShortenCollector(
}
}
private fun addElementToShorten(element: KtElement, shortenedRef: String?, nameToImport: FqName?, isImportWithStar: Boolean) {
val qualifier = element.getQualifier() ?: return
private fun addElementToShorten(elementInfoToShorten: ElementToShorten) {
val qualifier = elementInfoToShorten.element.getQualifier() ?: return
if (!qualifier.isAlreadyCollected()) {
removeRedundantElements(qualifier)
when (element) {
is KtUserType -> typesToShorten.add(ShortenType(element, shortenedRef, nameToImport, isImportWithStar))
is KtDotQualifiedExpression -> qualifiersToShorten.add(
ShortenQualifier(
element, shortenedRef, nameToImport, isImportWithStar
)
)
when (elementInfoToShorten) {
is ShortenType -> typesToShorten.add(elementInfoToShorten)
is ShortenQualifier -> qualifiersToShorten.add(elementInfoToShorten)
}
}
}
private fun addElementToShorten(elementInfoToShorten: ElementToShorten) {
val (nameToImport, isImportWithStar) = if (elementInfoToShorten.importAllInParent && elementInfoToShorten.nameToImport?.parentOrNull()?.isRoot == false) {
elementInfoToShorten.nameToImport?.parent() to true
} else {
elementInfoToShorten.nameToImport to false
}
when (elementInfoToShorten) {
is ShortenType -> addElementToShorten(
elementInfoToShorten.element, elementInfoToShorten.shortenedRef, nameToImport, isImportWithStar
)
is ShortenQualifier -> addElementToShorten(
elementInfoToShorten.element, elementInfoToShorten.shortenedRef, nameToImport, isImportWithStar
)
}
}
/**
* Checks whether type reference of [this] type is considered to be in the [selection] text range.
*
@@ -1421,5 +1408,5 @@ internal fun KtSimpleNameExpression.getDotQualifiedExpressionForSelector(): KtDo
private fun KtElement.getQualifier(): KtElement? = when (this) {
is KtUserType -> qualifier
is KtDotQualifiedExpression -> receiverExpression
else -> null
else -> error("Unexpected ${this::class}")
}