From deb7999bfb15427f6eff43719a5022e7cfce6fa7 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Wed, 13 Dec 2023 16:58:10 +0200 Subject: [PATCH] KT-64205 [AA] Adjust `defaultCallableShortenStrategy` to import only top-level callables ^KT-64205 Fixed --- .../api/components/KtReferenceShortener.kt | 28 +++++++++++++++---- .../shortenRange/companionUsedOutOfClass.txt | 2 +- .../enumEntryInitUsesCompanion.txt | 1 - .../enumEntryInitUsesCompanion2.txt | 1 - .../shortenRange/multipleImport.txt | 4 +-- 5 files changed, 25 insertions(+), 11 deletions(-) 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 9de31a8e8c4..0c693ad5dfc 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 @@ -87,12 +87,28 @@ public enum class ShortenStrategy { } public val defaultCallableShortenStrategy: (KtCallableSymbol) -> ShortenStrategy = { symbol -> - if (symbol is KtEnumEntrySymbol) { - DO_NOT_SHORTEN - } else if (symbol is KtConstructorSymbol && symbol.containingClassIdIfNonLocal?.isNestedClass == true) { - SHORTEN_IF_ALREADY_IMPORTED - } else { - SHORTEN_AND_IMPORT + when (symbol) { + is KtEnumEntrySymbol -> DO_NOT_SHORTEN + + is KtConstructorSymbol -> { + val isNestedClassConstructor = symbol.containingClassIdIfNonLocal?.isNestedClass == true + + if (isNestedClassConstructor) { + SHORTEN_IF_ALREADY_IMPORTED + } else { + SHORTEN_AND_IMPORT + } + } + + else -> { + val isNotTopLevel = symbol.callableIdIfNonLocal?.classId != null + + if (isNotTopLevel) { + SHORTEN_IF_ALREADY_IMPORTED + } else { + SHORTEN_AND_IMPORT + } + } } } } diff --git a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/companionUsedOutOfClass.txt b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/companionUsedOutOfClass.txt index a085dad8566..569bb701404 100644 --- a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/companionUsedOutOfClass.txt +++ b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/companionUsedOutOfClass.txt @@ -1,6 +1,6 @@ Before shortening: a.b.c.MyClass.Companion.foo() with default settings: -[qualifier] a.b.c.MyClass.Companion.foo() +[qualifier] a.b.c.MyClass with DO_NOT_SHORTEN: with SHORTEN_IF_ALREADY_IMPORTED: [qualifier] a.b.c.MyClass diff --git a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion.txt b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion.txt index 0a40b013793..e1088c0fe8f 100644 --- a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion.txt +++ b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion.txt @@ -1,6 +1,5 @@ Before shortening: C.K with default settings: -[qualifier] C.K with DO_NOT_SHORTEN: with SHORTEN_IF_ALREADY_IMPORTED: with SHORTEN_AND_IMPORT: diff --git a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion2.txt b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion2.txt index e2ca828a55e..4d5e3ece8ec 100644 --- a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion2.txt +++ b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/enumEntryInitUsesCompanion2.txt @@ -1,6 +1,5 @@ Before shortening: C.foo() with default settings: -[qualifier] C.foo() with DO_NOT_SHORTEN: with SHORTEN_IF_ALREADY_IMPORTED: with SHORTEN_AND_IMPORT: diff --git a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/multipleImport.txt b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/multipleImport.txt index 17a55162e15..e1b2807e5cd 100644 --- a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/multipleImport.txt +++ b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/multipleImport.txt @@ -1,7 +1,7 @@ Before shortening: x.y.z.Outer.Inner.VALUE0 > x.y.z.Outer.Inner.VALUE1 with default settings: -[qualifier] x.y.z.Outer.Inner.VALUE0 -[qualifier] x.y.z.Outer.Inner.VALUE1 +[qualifier] x.y.z.Outer +[qualifier] x.y.z.Outer with DO_NOT_SHORTEN: with SHORTEN_IF_ALREADY_IMPORTED: with SHORTEN_AND_IMPORT: