From 81768bdaefc16d24571a567151ef2482b927cffb Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 27 Aug 2021 12:40:25 +0300 Subject: [PATCH] [FIR IDE] Mark imports from the same package as unused --- .../api/fir/components/KtFirImportOptimizer.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt index c05430a5f57..eda63526786 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt @@ -56,6 +56,10 @@ internal class KtFirImportOptimizer( .toSet() val referencesEntities = collectReferencedEntities(firFile) + .filterNot { (fqName, referencedByNames) -> + // when referenced by more than one name, we need to keep the imports with same package + fqName.parentOrNull() == file.packageFqName && referencedByNames.size == 1 + } val requiredStarImports = referencesEntities.keys .asSequence() @@ -168,11 +172,19 @@ internal class KtFirImportOptimizer( } private fun saveType(classId: ClassId) { - usedImports.getOrPut(classId.asSingleFqName()) { hashSetOf() } += classId.shortClassName + val importableName = classId.asSingleFqName() + val referencedByName = classId.shortClassName + + saveReferencedItem(importableName, referencedByName) } private fun saveCallable(resolvedSymbol: FirCallableSymbol<*>, referencedByName: Name) { val importableName = resolvedSymbol.computeImportableName() ?: return + + saveReferencedItem(importableName, referencedByName) + } + + private fun saveReferencedItem(importableName: FqName, referencedByName: Name) { usedImports.getOrPut(importableName) { hashSetOf() } += referencedByName } })