KTIJ-26423 [AA] Remove KtImportOptimizerResult.unusedImports

This information is computed on the `intellij` side, and no there is
no code left in `kotlin` which still requires it
This commit is contained in:
Roman Golyshev
2023-10-24 19:14:56 +02:00
committed by teamcity
parent bd92224aec
commit 21c46a6ddb
2 changed files with 1 additions and 47 deletions
@@ -59,52 +59,9 @@ internal class KtFirImportOptimizer(
if (existingImports.isEmpty()) return KtImportOptimizerResult()
val firFile = file.getOrBuildFirFile(firResolveSession).apply { lazyResolveToPhaseRecursively(FirResolvePhase.BODY_RESOLVE) }
val explicitlyImportedFqNames = existingImports
.asSequence()
.mapNotNull { it.importPath }
.filter { !it.isAllUnder && !it.hasAlias() }
.map { it.fqName }
.toSet()
val (usedDeclarations, unresolvedNames) = collectReferencedEntities(firFile)
// TODO remove unused imports computing code completely
val referencesEntities = usedDeclarations
.filterNot { (fqName, referencedByNames) ->
val fromCurrentPackage = fqName.parentOrNull() == file.packageFqName
val noAliasedImports = referencedByNames.singleOrNull() == fqName.shortName()
fromCurrentPackage && noAliasedImports
}
val requiredStarImports = referencesEntities.keys
.asSequence()
.filterNot { it in explicitlyImportedFqNames }
.mapNotNull { it.parentOrNull() }
.filterNot { it.isRoot }
.toSet()
val unusedImports = mutableSetOf<KtImportDirective>()
val alreadySeenImports = mutableSetOf<ImportPath>()
for (import in existingImports) {
val importPath = import.importPath ?: continue
val isUsed = when {
importPath.importedName in unresolvedNames -> true
!alreadySeenImports.add(importPath) -> false
importPath.isAllUnder -> unresolvedNames.isNotEmpty() || importPath.fqName in requiredStarImports
importPath.fqName in referencesEntities -> importPath.importedName in referencesEntities.getValue(importPath.fqName)
else -> false
}
if (!isUsed) {
unusedImports += import
}
}
return KtImportOptimizerResult(unusedImports, usedDeclarations, unresolvedNames)
return KtImportOptimizerResult(usedDeclarations, unresolvedNames)
}
private data class ReferencedEntitiesResult(