[FIR IDE] Add token validity assertion to KtFirImportOptimizer

This commit is contained in:
Roman Golyshev
2021-08-31 17:19:48 +03:00
committed by Space
parent 81768bdaef
commit 03f29de5ef
3 changed files with 8 additions and 2 deletions
@@ -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
}
@@ -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)
@@ -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