diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt index 92d52f8d286..00416eb72eb 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt @@ -48,6 +48,7 @@ public abstract class KtAnalysisSession(final override val token: ValidityToken) KtSymbolsMixIn, KtReferenceResolveMixIn, KtReferenceShortenerMixIn, + KtImportOptimizerMixIn, KtSymbolDeclarationRendererMixIn, KtVisibilityCheckerMixIn, KtMemberSymbolProviderMixin, @@ -88,6 +89,9 @@ public abstract class KtAnalysisSession(final override val token: ValidityToken) internal val referenceShortener: KtReferenceShortener get() = referenceShortenerImpl protected abstract val referenceShortenerImpl: KtReferenceShortener + internal val importOptimizer: KtImportOptimizer get() = importOptimizerImpl + protected abstract val importOptimizerImpl: KtImportOptimizer + internal val symbolDeclarationRendererProvider: KtSymbolDeclarationRendererProvider get() = symbolDeclarationRendererProviderImpl protected abstract val symbolDeclarationRendererProviderImpl: KtSymbolDeclarationRendererProvider 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 new file mode 100644 index 00000000000..3bc5a250c94 --- /dev/null +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/components/KtImportOptimizer.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.frontend.api.components + +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtImportDirective + +public abstract class KtImportOptimizer { + public abstract fun analyseImports(file: KtFile): KtImportOptimizerResult +} + +public interface KtImportOptimizerMixIn : KtAnalysisSessionMixIn { + public fun analyseImports(file: KtFile): KtImportOptimizerResult { + return analysisSession.importOptimizer.analyseImports(file) + } +} + +public class KtImportOptimizerResult( + public val unusedImports: Set, +) \ No newline at end of file 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 de4b72ac3a5..646de46cced 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,6 +64,8 @@ private constructor( override val referenceShortenerImpl = KtFirReferenceShortener(this, token, firResolveState) + override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer() + 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 new file mode 100644 index 00000000000..f4566ce83f3 --- /dev/null +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.frontend.api.fir.components + +import org.jetbrains.kotlin.idea.frontend.api.components.KtImportOptimizer +import org.jetbrains.kotlin.idea.frontend.api.components.KtImportOptimizerResult +import org.jetbrains.kotlin.psi.KtFile + +internal class KtFirImportOptimizer : KtImportOptimizer() { + override fun analyseImports(file: KtFile): KtImportOptimizerResult { + return KtImportOptimizerResult(emptySet()) + } +}