KTIJ-26423 [AA] Return more info from KtFirImportOptimizer

Deprecate `unusedImports`, since they are supposed to be computed
on the IDE side from now on based on the information from
Analysis API

Currently the `unusedImports` property is not removed completely
so it can still be used by the Kotlin side import optimizer
tests; they should be moved/adapted to the intellij repository
also
This commit is contained in:
Roman Golyshev
2023-07-27 16:23:38 +02:00
committed by teamcity
parent 43180597fe
commit 10df37ba8e
3 changed files with 12 additions and 5 deletions
@@ -57,7 +57,7 @@ internal class KtFirImportOptimizer(
override fun analyseImports(file: KtFile): KtImportOptimizerResult {
val existingImports = file.importDirectives
if (existingImports.isEmpty()) return KtImportOptimizerResult(emptySet())
if (existingImports.isEmpty()) return KtImportOptimizerResult()
val firFile = file.getOrBuildFirFile(firResolveSession).apply { lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) }
@@ -68,9 +68,10 @@ internal class KtFirImportOptimizer(
.map { it.fqName }
.toSet()
val (usedImports, unresolvedNames) = collectReferencedEntities(firFile)
val (usedDeclarations, unresolvedNames) = collectReferencedEntities(firFile)
val referencesEntities = usedImports
// 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()
@@ -104,7 +105,7 @@ internal class KtFirImportOptimizer(
}
}
return KtImportOptimizerResult(unusedImports)
return KtImportOptimizerResult(unusedImports, usedDeclarations, unresolvedNames)
}
private data class ReferencedEntitiesResult(