diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt index a8b1e573473..fab1ceb8524 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/sessionFactoryHelpers.kt @@ -54,13 +54,10 @@ internal inline fun createCompositeSymbolProvider( internal fun FirSession.registerCompilerPluginExtensions(project: Project, module: KtSourceModule) { val extensionProvider = project.getService(KtCompilerPluginsProvider::class.java) ?: return FirSessionConfigurator(this).apply { - @Suppress("UNCHECKED_CAST") - val registrars = extensionProvider.getRegisteredExtensions( - module, - FirExtensionRegistrarAdapter, - ) as List + val registrars = FirExtensionRegistrarAdapter.getInstances(project) + + extensionProvider.getRegisteredExtensions(module, FirExtensionRegistrarAdapter) for (extensionRegistrar in registrars) { - registerExtensions(extensionRegistrar.configure()) + registerExtensions((extensionRegistrar as FirExtensionRegistrar).configure()) } }.configure() } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/services/KtCompilerPluginsProviderForTests.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/services/NoOpKtCompilerPluginsProvider.kt similarity index 75% rename from analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/services/KtCompilerPluginsProviderForTests.kt rename to analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/services/NoOpKtCompilerPluginsProvider.kt index 6f7de0d363c..802cc4934cf 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/services/KtCompilerPluginsProviderForTests.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/services/NoOpKtCompilerPluginsProvider.kt @@ -5,13 +5,11 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.services -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor -internal class KtCompilerPluginsProviderForTests(val project: Project) : KtCompilerPluginsProvider() { - override fun getRegisteredExtensions(module: KtSourceModule, extensionType: ProjectExtensionDescriptor): List { - return extensionType.getInstances(project) - } +internal object NoOpKtCompilerPluginsProvider : KtCompilerPluginsProvider() { + override fun getRegisteredExtensions(module: KtSourceModule, extensionType: ProjectExtensionDescriptor): List = + emptyList() } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/AnalysisApiFirTestServiceRegistrar.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/AnalysisApiFirTestServiceRegistrar.kt index 9cb13988726..e3199f9b6e6 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/AnalysisApiFirTestServiceRegistrar.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/AnalysisApiFirTestServiceRegistrar.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveCompone import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory -import org.jetbrains.kotlin.analysis.low.level.api.fir.services.KtCompilerPluginsProviderForTests +import org.jetbrains.kotlin.analysis.low.level.api.fir.services.NoOpKtCompilerPluginsProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.services.LLFirSealedClassInheritorsProcessorFactoryForTests import org.jetbrains.kotlin.analysis.low.level.api.fir.services.PackagePartProviderTestImpl import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache @@ -56,7 +56,7 @@ object AnalysisApiFirTestServiceRegistrar : AnalysisApiTestServiceRegistrar() { registerService(PackagePartProviderFactory::class.java, PackagePartProviderTestImpl(testServices)) registerService(KotlinAsJavaSupport::class.java, SymbolKotlinAsJavaSupport(project)) - registerService(KtCompilerPluginsProvider::class.java, KtCompilerPluginsProviderForTests(project)) + registerService(KtCompilerPluginsProvider::class.java, NoOpKtCompilerPluginsProvider) registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl()) registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java) } diff --git a/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KtCompilerPluginsProvider.kt b/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KtCompilerPluginsProvider.kt index a453e25a8b3..4ec1ce8e684 100644 --- a/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KtCompilerPluginsProvider.kt +++ b/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KtCompilerPluginsProvider.kt @@ -13,6 +13,8 @@ import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor public abstract class KtCompilerPluginsProvider { /** * Returns a list of extensions of a base [extensionType] which are registered for [module] + * + * These extensions are used in addition to those provided by the extension descriptor's [ProjectExtensionDescriptor.getInstances]. */ public abstract fun getRegisteredExtensions(module: KtSourceModule, extensionType: ProjectExtensionDescriptor): List }