From ce218b8a0bce756b1cf3ab22642df597107086da Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 29 Nov 2021 14:07:27 +0300 Subject: [PATCH] [FIR] Make `FirExtensionRegistrar` a proper extension point After that commit it's allowed to register any FIR plugin using existing extension infrastructure (`-Xplugin` CLI argument, plugin.xml for IDE plugins, etc) --- .../api/fir/sessions/FirIdeSessionFactory.kt | 4 ++++ .../compiler/FirKotlinToJvmBytecodeCompiler.kt | 9 +++++++-- .../cli/jvm/compiler/KotlinCoreEnvironment.kt | 2 ++ .../fir/extensions/FirExtensionRegistrar.kt | 8 ++++++-- .../kotlin/fir/session/FirSessionFactory.kt | 6 ++++++ .../test/frontend/fir/FirFrontendFacade.kt | 2 ++ .../kotlin/fir/AbstractFirBaseDiagnosticsTest.kt | 1 + .../org/jetbrains/kotlin/fir/SessionTestUtils.kt | 2 ++ .../runners/commonPluginTestConfiguration.kt | 16 +++------------- ...trar.kt => ExtensionRegistrarConfigurator.kt} | 5 ++++- .../AbstractFirParcelizeDiagnosticTest.kt | 3 +-- .../test/runners/AbstractParcelizeBoxTest.kt | 4 ++-- .../services/FirFacadeWithParcelizeExtension.kt | 16 ---------------- .../services/ParcelizeEnvironmentConfigurator.kt | 3 +++ 14 files changed, 43 insertions(+), 38 deletions(-) rename plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/{IrExtensionRegistrar.kt => ExtensionRegistrarConfigurator.kt} (69%) delete mode 100644 plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/FirFacadeWithParcelizeExtension.kt diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/FirIdeSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/FirIdeSessionFactory.kt index f874231c5cc..1cd39910a12 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/FirIdeSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/FirIdeSessionFactory.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.caches.FirCachesFactory import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.java.FirJavaFacade import org.jetbrains.kotlin.fir.java.JavaSymbolProvider import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider @@ -159,6 +160,9 @@ internal object FirIdeSessionFactory { if (isRootModule) { registerExtendedCommonCheckers() } + for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) { + registerExtensions(extensionRegistrar.configure()) + } }.configure() configureSession?.invoke(this) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index 49c15d4aa1c..a36c3512402 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.fir.pipeline.buildFirFromKtFiles import org.jetbrains.kotlin.fir.pipeline.convertToIr @@ -87,6 +88,7 @@ object FirKotlinToJvmBytecodeCompiler { val isMultiModuleChunk = chunk.size > 1 // TODO: run lowerings for all modules in the chunk, then run codegen for all modules. + val project = (projectEnvironment as? PsiBasedProjectEnvironment)?.project for (module in chunk) { val moduleConfiguration = projectConfiguration.applyModuleProperties(module, buildFile) val context = CompilationContext( @@ -101,7 +103,8 @@ object FirKotlinToJvmBytecodeCompiler { targetIds, incrementalComponents, extendedAnalysisMode, - (projectEnvironment as? PsiBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) } ?: emptyList() + firExtensionRegistrars = project?.let { FirExtensionRegistrar.getInstances(it) } ?: emptyList(), + irGenerationExtensions = project?.let { IrGenerationExtension.getInstances(it) } ?: emptyList() ) val generationState = context.compileModule() ?: return false outputs += generationState @@ -112,7 +115,7 @@ object FirKotlinToJvmBytecodeCompiler { } return writeOutputs( - (projectEnvironment as? PsiBasedProjectEnvironment)?.project, + project, projectConfiguration, chunk, outputs.map(Pair::second), @@ -208,6 +211,7 @@ object FirKotlinToJvmBytecodeCompiler { librariesScope, lookupTracker = moduleConfiguration.get(CommonConfigurationKeys.LOOKUP_TRACKER), providerAndScopeForIncrementalCompilation, + firExtensionRegistrars, dependenciesConfigurator = { dependencies(moduleConfiguration.jvmClasspathRoots.map { it.toPath() }) dependencies(moduleConfiguration.jvmModularRoots.map { it.toPath() }) @@ -350,6 +354,7 @@ object FirKotlinToJvmBytecodeCompiler { val targetIds: List?, val incrementalComponents: IncrementalCompilationComponents?, val extendedAnalysisMode: Boolean, + val firExtensionRegistrars: List, val irGenerationExtensions: Collection ) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index ec6fbf105a5..27e21563c5b 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -82,6 +82,7 @@ import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.extensions.* import org.jetbrains.kotlin.extensions.internal.CandidateInterceptor import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptor +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache @@ -648,6 +649,7 @@ class KotlinCoreEnvironment private constructor( TypeResolutionInterceptor.registerExtensionPoint(project) CandidateInterceptor.registerExtensionPoint(project) DescriptorSerializerPlugin.registerExtensionPoint(project) + FirExtensionRegistrar.registerExtensionPoint(project) } internal fun registerExtensionsFromPlugins(project: MockProject, configuration: CompilerConfiguration) { diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt index 66eb9ba0efc..8f84b774d01 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt @@ -5,14 +5,18 @@ package org.jetbrains.kotlin.fir.extensions +import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.SessionConfiguration import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension import kotlin.reflect.KClass abstract class FirExtensionRegistrar { - companion object { - val AVAILABLE_EXTENSIONS = listOf( + companion object : ProjectExtensionDescriptor( + name = "org.jetbrains.kotlin.fir.extensions.firExtensionRegistrar", + extensionClass = FirExtensionRegistrar::class.java + ) { + internal val AVAILABLE_EXTENSIONS = listOf( FirStatusTransformerExtension::class, FirDeclarationGenerationExtension::class, FirAdditionalCheckersExtension::class, diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt index 28e88ff39d2..bdac4236101 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt @@ -84,6 +84,7 @@ object FirSessionFactory { librariesScope: AbstractProjectFileSearchScope, lookupTracker: LookupTracker?, providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?, + extensionRegistrars: List, dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {}, noinline sessionConfigurator: FirSessionConfigurator.() -> Unit = {}, ): FirSession { @@ -113,6 +114,7 @@ object FirSessionFactory { sourceScope, projectEnvironment, providerAndScopeForIncrementalCompilation, + extensionRegistrars, languageVersionSettings = languageVersionSettings, lookupTracker = lookupTracker, init = sessionConfigurator @@ -125,6 +127,7 @@ object FirSessionFactory { scope: AbstractProjectFileSearchScope, projectEnvironment: AbstractProjectEnvironment, providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?, + extensionRegistrars: List, languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, lookupTracker: LookupTracker? = null, init: FirSessionConfigurator.() -> Unit = {} @@ -160,6 +163,9 @@ object FirSessionFactory { FirSessionConfigurator(this).apply { registerCommonCheckers() registerJvmCheckers() + for (extensionRegistrar in extensionRegistrars) { + registerExtensions(extensionRegistrar.configure()) + } init() }.configure() diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt index 61a84535fba..eb10a1fa49c 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices @@ -91,6 +92,7 @@ class FirFrontendFacade( PsiBasedProjectFileSearchScope(librariesScope), lookupTracker = null, providerAndScopeForIncrementalCompilation = null, + extensionRegistrars = FirExtensionRegistrar.getInstances(project), dependenciesConfigurator = { dependencies(configuration.jvmModularRoots.map { it.toPath() }) dependencies(configuration.jvmClasspathRoots.map { it.toPath() }) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt index a68d57dfeab..13fb6239f13 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt @@ -98,6 +98,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { librariesScope = PsiBasedProjectFileSearchScope(allProjectScope), lookupTracker = null, providerAndScopeForIncrementalCompilation = null, + extensionRegistrars = emptyList() ) { configureSession() getFirExtensions()?.let { diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt index ff9d082660d..ebd688db38a 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt @@ -40,6 +40,7 @@ fun createSessionForTests( librariesScope, lookupTracker = null, providerAndScopeForIncrementalCompilation = null, + extensionRegistrars = emptyList(), dependenciesConfigurator = { friendDependencies(friendsPaths) } @@ -65,6 +66,7 @@ fun createSessionForTests( PsiBasedProjectFileSearchScope(librariesScope), lookupTracker = null, providerAndScopeForIncrementalCompilation = null, + extensionRegistrars = emptyList(), dependenciesConfigurator = { friendDependencies(friendsPaths) } diff --git a/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/commonPluginTestConfiguration.kt b/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/commonPluginTestConfiguration.kt index 68b913a34bc..dd2837e44a9 100644 --- a/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/commonPluginTestConfiguration.kt +++ b/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/commonPluginTestConfiguration.kt @@ -5,18 +5,15 @@ package org.jetbrains.kotlin.fir.plugin.runners -import org.jetbrains.kotlin.fir.plugin.FirAllOpenComponentRegistrar -import org.jetbrains.kotlin.fir.plugin.services.IrExtensionRegistrar +import org.jetbrains.kotlin.fir.plugin.services.ExtensionRegistrarConfigurator import org.jetbrains.kotlin.fir.plugin.services.PluginAnnotationsProvider -import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP -import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() { - baseFirDiagnosticTestConfiguration(frontendFacade = FirFrontendFacadeWithPlugin) + baseFirDiagnosticTestConfiguration() defaultDirectives { +ENABLE_PLUGIN_PHASES @@ -25,13 +22,6 @@ fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() { useConfigurators( ::PluginAnnotationsProvider, - ::IrExtensionRegistrar + ::ExtensionRegistrarConfigurator ) } - -val FirFrontendFacadeWithPlugin: Constructor - get() = { testServices -> - FirFrontendFacade(testServices) { - it.registerExtensions(FirAllOpenComponentRegistrar().configure()) - } - } diff --git a/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/IrExtensionRegistrar.kt b/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt similarity index 69% rename from plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/IrExtensionRegistrar.kt rename to plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt index 1b38caea019..934a309901e 100644 --- a/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/IrExtensionRegistrar.kt +++ b/plugins/fir/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt @@ -7,12 +7,15 @@ package org.jetbrains.kotlin.fir.plugin.services import com.intellij.openapi.project.Project import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar +import org.jetbrains.kotlin.fir.plugin.FirAllOpenComponentRegistrar import org.jetbrains.kotlin.ir.plugin.GeneratedDeclarationsIrBodyFiller import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.TestServices -class IrExtensionRegistrar(testServices: TestServices) : EnvironmentConfigurator(testServices) { +class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) { override fun registerCompilerExtensions(project: Project) { + FirExtensionRegistrar.registerExtension(project, FirAllOpenComponentRegistrar()) IrGenerationExtension.registerExtension(project, GeneratedDeclarationsIrBodyFiller()) } } diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt index d7a73bd8b26..d131e2d6d02 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.parcelize.test.runners -import org.jetbrains.kotlin.parcelize.test.services.FirFacadeWithParcelizeExtension import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator import org.jetbrains.kotlin.test.bind import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder @@ -18,7 +17,7 @@ import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() { override fun TestConfigurationBuilder.configuration() { - baseFirDiagnosticTestConfiguration(frontendFacade = FirFacadeWithParcelizeExtension) + baseFirDiagnosticTestConfiguration() defaultDirectives { +FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt index 292b4f7acd2..9cf16103ce2 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.bind import org.jetbrains.kotlin.test.builders.* import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.REQUIRES_SEPARATE_PROCESS -import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter @@ -26,6 +25,7 @@ import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter +import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler import org.jetbrains.kotlin.test.model.* @@ -116,7 +116,7 @@ open class AbstractParcelizeFirBoxTest : AbstractParcelizeBoxTestBase> - get() = FirFacadeWithParcelizeExtension + get() = ::FirFrontendFacade override val frontendToBackendConverter: Constructor> get() = ::Fir2IrResultsConverter diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/FirFacadeWithParcelizeExtension.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/FirFacadeWithParcelizeExtension.kt deleted file mode 100644 index 541bc9e0d9a..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/FirFacadeWithParcelizeExtension.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * 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.parcelize.test.services - -import org.jetbrains.kotlin.parcelize.fir.FirParcelizeExtensionRegistrar -import org.jetbrains.kotlin.test.Constructor -import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade - -val FirFacadeWithParcelizeExtension: Constructor = { testServices -> - FirFrontendFacade(testServices) { - it.registerExtensions(FirParcelizeExtensionRegistrar().configure()) - } -} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt index 9ebf2bdfaa4..4d4d6690598 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt @@ -9,8 +9,10 @@ import com.intellij.openapi.project.Project import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar import org.jetbrains.kotlin.parcelize.ParcelizeFirIrGeneratorExtension +import org.jetbrains.kotlin.parcelize.fir.FirParcelizeExtensionRegistrar import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.TestServices @@ -31,6 +33,7 @@ class ParcelizeEnvironmentConfigurator( override fun registerCompilerExtensions(project: Project) { if (useFirExtension) { + FirExtensionRegistrar.registerExtension(project, FirParcelizeExtensionRegistrar()) IrGenerationExtension.registerExtension(project, ParcelizeFirIrGeneratorExtension()) } else { ParcelizeComponentRegistrar.registerParcelizeComponents(project)