diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ReferenceShortener.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ReferenceShortener.kt index 8711f842437..ac085541bb7 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ReferenceShortener.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ReferenceShortener.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol import org.jetbrains.kotlin.psi.KtDotQualifiedExpression +import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtUserType @@ -41,7 +42,7 @@ internal class KtFe10ReferenceShortener( override fun getQualifiersToShorten(): List> = emptyList() - override fun invokeShortening() {} + override fun invokeShortening(): List = emptyList() } } } \ No newline at end of file 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 51f5811c474..35ae594dd6b 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 @@ -667,8 +667,6 @@ private class ElementsToShortenCollector( // No class with name `classId.shortClassName` is present in the scope. Hence, we can safely import the name and shorten // the reference. availableClassifier == null -> { - // Caller indicates don't shorten if doing that needs importing more names. Hence, we just skip. - if (option == ShortenOption.SHORTEN_IF_ALREADY_IMPORTED) continue return createElementToShorten( element, classId.asSingleFqName(), @@ -1070,9 +1068,9 @@ private class ShortenCommandImpl( private val qualifiersToShorten: List>, ) : ShortenCommand { - override fun invokeShortening() { + override fun invokeShortening(): List { // if the file has been invalidated, there's nothing we can shorten - val targetFile = targetFile.element ?: return + val targetFile = targetFile.element ?: return emptyList() for (nameToImport in importsToAdd) { addImportToFile(targetFile.project, targetFile, nameToImport) @@ -1082,18 +1080,21 @@ private class ShortenCommandImpl( addImportToFile(targetFile.project, targetFile, nameToImport, allUnder = true) } + val shorteningResults = mutableListOf() //todo // PostprocessReformattingAspect.getInstance(targetFile.project).disablePostprocessFormattingInside { for (typePointer in typesToShorten) { val type = typePointer.element ?: continue type.deleteQualifier() + shorteningResults.add(type) } for (callPointer in qualifiersToShorten) { val call = callPointer.element ?: continue - call.deleteQualifier() + call.deleteQualifier()?.let { shorteningResults.add(it) } } // } + return shorteningResults } override val isEmpty: Boolean get() = typesToShorten.isEmpty() && qualifiersToShorten.isEmpty() diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtReferenceShortener.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtReferenceShortener.kt index c0bd6053adf..04aa5f8a553 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtReferenceShortener.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtReferenceShortener.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtDotQualifiedExpression import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile @@ -119,7 +118,11 @@ public interface KtReferenceShortenerMixIn : KtAnalysisSessionMixIn { } public interface ShortenCommand { - public fun invokeShortening() + /** + * Shortens target elements, adds necessary import, and returns a list of the shortened result elements. + */ + public fun invokeShortening(): List + public val isEmpty: Boolean public fun getTypesToShorten(): List> public fun getQualifiersToShorten(): List>