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 1fb228c122f..f0ff01b7e77 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 @@ -613,12 +613,10 @@ private class ElementsToShortenCollector( withImplicitReceivers = false, ) ?: return null - val allClassIds = wholeClassQualifier.outerClassesWithSelf - val allQualifiers = wholeQualifierElement.qualifiedElementsWithSelf - return findClassifierElementsToShorten( + return findClassifierQualifierToShorten( positionScopes, - allClassIds, - allQualifiers, + wholeClassQualifier, + wholeQualifierElement, ) } @@ -828,11 +826,18 @@ private class ElementsToShortenCollector( return createElementToShorten(referenceExpression, shortenedRef = aliasedName) } - private fun findClassifierElementsToShorten( + /** + * Finds the longest qualifier in [wholeQualifierElement] which can be safely shortened in the [positionScopes]. + * [wholeQualifierClassId] is supposed to reflect the class which is referenced by the [wholeQualifierElement]. + */ + private fun findClassifierQualifierToShorten( positionScopes: List, - allClassIds: Sequence, - allQualifiedElements: Sequence, + wholeQualifierClassId: ClassId, + wholeQualifierElement: KtElement, ): ElementToShorten? { + val allClassIds = wholeQualifierClassId.outerClassesWithSelf + val allQualifiedElements = wholeQualifierElement.qualifiedElementsWithSelf + for ((classId, element) in allClassIds.zip(allQualifiedElements)) { val classSymbol = shorteningContext.toClassSymbol(classId) ?: return null val option = classShortenStrategy(classSymbol)