diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/components/KtImportOptimizer.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/components/KtImportOptimizer.kt index 3bc5a250c94..6d215640f15 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/components/KtImportOptimizer.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/components/KtImportOptimizer.kt @@ -5,10 +5,11 @@ package org.jetbrains.kotlin.idea.frontend.api.components +import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtImportDirective -public abstract class KtImportOptimizer { +public abstract class KtImportOptimizer : ValidityTokenOwner { public abstract fun analyseImports(file: KtFile): KtImportOptimizerResult } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt index d33330b1c87..074e781a136 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt @@ -64,7 +64,7 @@ private constructor( override val referenceShortenerImpl = KtFirReferenceShortener(this, token, firResolveState) - override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer(firResolveState) + override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer(token, firResolveState) override val symbolDeclarationRendererProviderImpl: KtSymbolDeclarationRendererProvider = KtFirSymbolDeclarationRendererProvider(this, token) 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 eda63526786..d99db920ea9 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 @@ -26,8 +26,10 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.idea.fir.isInvokeFunction import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState import org.jetbrains.kotlin.idea.fir.low.level.api.api.getOrBuildFirFile +import org.jetbrains.kotlin.idea.frontend.api.assertIsValidAndAccessible import org.jetbrains.kotlin.idea.frontend.api.components.KtImportOptimizer import org.jetbrains.kotlin.idea.frontend.api.components.KtImportOptimizerResult +import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityToken import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -38,12 +40,15 @@ import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.util.OperatorNameConventions internal class KtFirImportOptimizer( + override val token: ValidityToken, private val firResolveState: FirModuleResolveState ) : KtImportOptimizer() { private val firSession: FirSession get() = firResolveState.rootModuleSession override fun analyseImports(file: KtFile): KtImportOptimizerResult { + assertIsValidAndAccessible() + val firFile = file.getOrBuildFirFile(firResolveState).apply { ensureResolved(FirResolvePhase.BODY_RESOLVE) } val existingImports = file.importDirectives