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(
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtImportDirective
public abstract class KtImportOptimizer : KtLifetimeOwner {
public abstract fun analyseImports(file: KtFile): KtImportOptimizerResult
@@ -30,8 +29,6 @@ public interface KtImportOptimizerMixIn : KtAnalysisSessionMixIn {
}
public class KtImportOptimizerResult(
@Deprecated("Compute unused import on the IntelliJ side instead, see org.jetbrains.kotlin.idea.base.analysis.api.utils.computeUnusedImports")
public val unusedImports: Set<KtImportDirective> = emptySet(),
public val usedDeclarations: Map<FqName, Set<Name>> = emptyMap(),
public val unresolvedNames: Set<Name> = emptySet(),
)