[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)
This commit is contained in:
committed by
TeamCityServer
parent
14ee13c72e
commit
ce218b8a0b
+4
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.caches.FirCachesFactory
|
|||||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||||
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
|
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
|
||||||
import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider
|
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.FirJavaFacade
|
||||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
||||||
@@ -159,6 +160,9 @@ internal object FirIdeSessionFactory {
|
|||||||
if (isRootModule) {
|
if (isRootModule) {
|
||||||
registerExtendedCommonCheckers()
|
registerExtendedCommonCheckers()
|
||||||
}
|
}
|
||||||
|
for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) {
|
||||||
|
registerExtensions(extensionRegistrar.configure())
|
||||||
|
}
|
||||||
}.configure()
|
}.configure()
|
||||||
configureSession?.invoke(this)
|
configureSession?.invoke(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-2
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
|||||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
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.java.FirProjectSessionProvider
|
||||||
import org.jetbrains.kotlin.fir.pipeline.buildFirFromKtFiles
|
import org.jetbrains.kotlin.fir.pipeline.buildFirFromKtFiles
|
||||||
import org.jetbrains.kotlin.fir.pipeline.convertToIr
|
import org.jetbrains.kotlin.fir.pipeline.convertToIr
|
||||||
@@ -87,6 +88,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
val isMultiModuleChunk = chunk.size > 1
|
val isMultiModuleChunk = chunk.size > 1
|
||||||
|
|
||||||
// TODO: run lowerings for all modules in the chunk, then run codegen for all modules.
|
// 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) {
|
for (module in chunk) {
|
||||||
val moduleConfiguration = projectConfiguration.applyModuleProperties(module, buildFile)
|
val moduleConfiguration = projectConfiguration.applyModuleProperties(module, buildFile)
|
||||||
val context = CompilationContext(
|
val context = CompilationContext(
|
||||||
@@ -101,7 +103,8 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
targetIds,
|
targetIds,
|
||||||
incrementalComponents,
|
incrementalComponents,
|
||||||
extendedAnalysisMode,
|
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
|
val generationState = context.compileModule() ?: return false
|
||||||
outputs += generationState
|
outputs += generationState
|
||||||
@@ -112,7 +115,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return writeOutputs(
|
return writeOutputs(
|
||||||
(projectEnvironment as? PsiBasedProjectEnvironment)?.project,
|
project,
|
||||||
projectConfiguration,
|
projectConfiguration,
|
||||||
chunk,
|
chunk,
|
||||||
outputs.map(Pair<FirResult, GenerationState>::second),
|
outputs.map(Pair<FirResult, GenerationState>::second),
|
||||||
@@ -208,6 +211,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
librariesScope,
|
librariesScope,
|
||||||
lookupTracker = moduleConfiguration.get(CommonConfigurationKeys.LOOKUP_TRACKER),
|
lookupTracker = moduleConfiguration.get(CommonConfigurationKeys.LOOKUP_TRACKER),
|
||||||
providerAndScopeForIncrementalCompilation,
|
providerAndScopeForIncrementalCompilation,
|
||||||
|
firExtensionRegistrars,
|
||||||
dependenciesConfigurator = {
|
dependenciesConfigurator = {
|
||||||
dependencies(moduleConfiguration.jvmClasspathRoots.map { it.toPath() })
|
dependencies(moduleConfiguration.jvmClasspathRoots.map { it.toPath() })
|
||||||
dependencies(moduleConfiguration.jvmModularRoots.map { it.toPath() })
|
dependencies(moduleConfiguration.jvmModularRoots.map { it.toPath() })
|
||||||
@@ -350,6 +354,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
val targetIds: List<TargetId>?,
|
val targetIds: List<TargetId>?,
|
||||||
val incrementalComponents: IncrementalCompilationComponents?,
|
val incrementalComponents: IncrementalCompilationComponents?,
|
||||||
val extendedAnalysisMode: Boolean,
|
val extendedAnalysisMode: Boolean,
|
||||||
|
val firExtensionRegistrars: List<FirExtensionRegistrar>,
|
||||||
val irGenerationExtensions: Collection<IrGenerationExtension>
|
val irGenerationExtensions: Collection<IrGenerationExtension>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ import org.jetbrains.kotlin.config.*
|
|||||||
import org.jetbrains.kotlin.extensions.*
|
import org.jetbrains.kotlin.extensions.*
|
||||||
import org.jetbrains.kotlin.extensions.internal.CandidateInterceptor
|
import org.jetbrains.kotlin.extensions.internal.CandidateInterceptor
|
||||||
import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptor
|
import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptor
|
||||||
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension
|
import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
|
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
|
||||||
@@ -648,6 +649,7 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
TypeResolutionInterceptor.registerExtensionPoint(project)
|
TypeResolutionInterceptor.registerExtensionPoint(project)
|
||||||
CandidateInterceptor.registerExtensionPoint(project)
|
CandidateInterceptor.registerExtensionPoint(project)
|
||||||
DescriptorSerializerPlugin.registerExtensionPoint(project)
|
DescriptorSerializerPlugin.registerExtensionPoint(project)
|
||||||
|
FirExtensionRegistrar.registerExtensionPoint(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun registerExtensionsFromPlugins(project: MockProject, configuration: CompilerConfiguration) {
|
internal fun registerExtensionsFromPlugins(project: MockProject, configuration: CompilerConfiguration) {
|
||||||
|
|||||||
+6
-2
@@ -5,14 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.extensions
|
package org.jetbrains.kotlin.fir.extensions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.SessionConfiguration
|
import org.jetbrains.kotlin.fir.SessionConfiguration
|
||||||
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
|
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
abstract class FirExtensionRegistrar {
|
abstract class FirExtensionRegistrar {
|
||||||
companion object {
|
companion object : ProjectExtensionDescriptor<FirExtensionRegistrar>(
|
||||||
val AVAILABLE_EXTENSIONS = listOf(
|
name = "org.jetbrains.kotlin.fir.extensions.firExtensionRegistrar",
|
||||||
|
extensionClass = FirExtensionRegistrar::class.java
|
||||||
|
) {
|
||||||
|
internal val AVAILABLE_EXTENSIONS = listOf(
|
||||||
FirStatusTransformerExtension::class,
|
FirStatusTransformerExtension::class,
|
||||||
FirDeclarationGenerationExtension::class,
|
FirDeclarationGenerationExtension::class,
|
||||||
FirAdditionalCheckersExtension::class,
|
FirAdditionalCheckersExtension::class,
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ object FirSessionFactory {
|
|||||||
librariesScope: AbstractProjectFileSearchScope,
|
librariesScope: AbstractProjectFileSearchScope,
|
||||||
lookupTracker: LookupTracker?,
|
lookupTracker: LookupTracker?,
|
||||||
providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?,
|
providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?,
|
||||||
|
extensionRegistrars: List<FirExtensionRegistrar>,
|
||||||
dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {},
|
dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {},
|
||||||
noinline sessionConfigurator: FirSessionConfigurator.() -> Unit = {},
|
noinline sessionConfigurator: FirSessionConfigurator.() -> Unit = {},
|
||||||
): FirSession {
|
): FirSession {
|
||||||
@@ -113,6 +114,7 @@ object FirSessionFactory {
|
|||||||
sourceScope,
|
sourceScope,
|
||||||
projectEnvironment,
|
projectEnvironment,
|
||||||
providerAndScopeForIncrementalCompilation,
|
providerAndScopeForIncrementalCompilation,
|
||||||
|
extensionRegistrars,
|
||||||
languageVersionSettings = languageVersionSettings,
|
languageVersionSettings = languageVersionSettings,
|
||||||
lookupTracker = lookupTracker,
|
lookupTracker = lookupTracker,
|
||||||
init = sessionConfigurator
|
init = sessionConfigurator
|
||||||
@@ -125,6 +127,7 @@ object FirSessionFactory {
|
|||||||
scope: AbstractProjectFileSearchScope,
|
scope: AbstractProjectFileSearchScope,
|
||||||
projectEnvironment: AbstractProjectEnvironment,
|
projectEnvironment: AbstractProjectEnvironment,
|
||||||
providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?,
|
providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?,
|
||||||
|
extensionRegistrars: List<FirExtensionRegistrar>,
|
||||||
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||||
lookupTracker: LookupTracker? = null,
|
lookupTracker: LookupTracker? = null,
|
||||||
init: FirSessionConfigurator.() -> Unit = {}
|
init: FirSessionConfigurator.() -> Unit = {}
|
||||||
@@ -160,6 +163,9 @@ object FirSessionFactory {
|
|||||||
FirSessionConfigurator(this).apply {
|
FirSessionConfigurator(this).apply {
|
||||||
registerCommonCheckers()
|
registerCommonCheckers()
|
||||||
registerJvmCheckers()
|
registerJvmCheckers()
|
||||||
|
for (extensionRegistrar in extensionRegistrars) {
|
||||||
|
registerExtensions(extensionRegistrar.configure())
|
||||||
|
}
|
||||||
init()
|
init()
|
||||||
}.configure()
|
}.configure()
|
||||||
|
|
||||||
|
|||||||
+2
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
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.moduleData
|
||||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
|
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
|
||||||
@@ -91,6 +92,7 @@ class FirFrontendFacade(
|
|||||||
PsiBasedProjectFileSearchScope(librariesScope),
|
PsiBasedProjectFileSearchScope(librariesScope),
|
||||||
lookupTracker = null,
|
lookupTracker = null,
|
||||||
providerAndScopeForIncrementalCompilation = null,
|
providerAndScopeForIncrementalCompilation = null,
|
||||||
|
extensionRegistrars = FirExtensionRegistrar.getInstances(project),
|
||||||
dependenciesConfigurator = {
|
dependenciesConfigurator = {
|
||||||
dependencies(configuration.jvmModularRoots.map { it.toPath() })
|
dependencies(configuration.jvmModularRoots.map { it.toPath() })
|
||||||
dependencies(configuration.jvmClasspathRoots.map { it.toPath() })
|
dependencies(configuration.jvmClasspathRoots.map { it.toPath() })
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
librariesScope = PsiBasedProjectFileSearchScope(allProjectScope),
|
librariesScope = PsiBasedProjectFileSearchScope(allProjectScope),
|
||||||
lookupTracker = null,
|
lookupTracker = null,
|
||||||
providerAndScopeForIncrementalCompilation = null,
|
providerAndScopeForIncrementalCompilation = null,
|
||||||
|
extensionRegistrars = emptyList()
|
||||||
) {
|
) {
|
||||||
configureSession()
|
configureSession()
|
||||||
getFirExtensions()?.let {
|
getFirExtensions()?.let {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ fun createSessionForTests(
|
|||||||
librariesScope,
|
librariesScope,
|
||||||
lookupTracker = null,
|
lookupTracker = null,
|
||||||
providerAndScopeForIncrementalCompilation = null,
|
providerAndScopeForIncrementalCompilation = null,
|
||||||
|
extensionRegistrars = emptyList(),
|
||||||
dependenciesConfigurator = {
|
dependenciesConfigurator = {
|
||||||
friendDependencies(friendsPaths)
|
friendDependencies(friendsPaths)
|
||||||
}
|
}
|
||||||
@@ -65,6 +66,7 @@ fun createSessionForTests(
|
|||||||
PsiBasedProjectFileSearchScope(librariesScope),
|
PsiBasedProjectFileSearchScope(librariesScope),
|
||||||
lookupTracker = null,
|
lookupTracker = null,
|
||||||
providerAndScopeForIncrementalCompilation = null,
|
providerAndScopeForIncrementalCompilation = null,
|
||||||
|
extensionRegistrars = emptyList(),
|
||||||
dependenciesConfigurator = {
|
dependenciesConfigurator = {
|
||||||
friendDependencies(friendsPaths)
|
friendDependencies(friendsPaths)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-13
@@ -5,18 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.plugin.runners
|
package org.jetbrains.kotlin.fir.plugin.runners
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.plugin.FirAllOpenComponentRegistrar
|
import org.jetbrains.kotlin.fir.plugin.services.ExtensionRegistrarConfigurator
|
||||||
import org.jetbrains.kotlin.fir.plugin.services.IrExtensionRegistrar
|
|
||||||
import org.jetbrains.kotlin.fir.plugin.services.PluginAnnotationsProvider
|
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.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
|
|
||||||
fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() {
|
fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() {
|
||||||
baseFirDiagnosticTestConfiguration(frontendFacade = FirFrontendFacadeWithPlugin)
|
baseFirDiagnosticTestConfiguration()
|
||||||
|
|
||||||
defaultDirectives {
|
defaultDirectives {
|
||||||
+ENABLE_PLUGIN_PHASES
|
+ENABLE_PLUGIN_PHASES
|
||||||
@@ -25,13 +22,6 @@ fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() {
|
|||||||
|
|
||||||
useConfigurators(
|
useConfigurators(
|
||||||
::PluginAnnotationsProvider,
|
::PluginAnnotationsProvider,
|
||||||
::IrExtensionRegistrar
|
::ExtensionRegistrarConfigurator
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val FirFrontendFacadeWithPlugin: Constructor<FirFrontendFacade>
|
|
||||||
get() = { testServices ->
|
|
||||||
FirFrontendFacade(testServices) {
|
|
||||||
it.registerExtensions(FirAllOpenComponentRegistrar().configure())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+4
-1
@@ -7,12 +7,15 @@ package org.jetbrains.kotlin.fir.plugin.services
|
|||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
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.ir.plugin.GeneratedDeclarationsIrBodyFiller
|
||||||
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
|
||||||
class IrExtensionRegistrar(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
||||||
override fun registerCompilerExtensions(project: Project) {
|
override fun registerCompilerExtensions(project: Project) {
|
||||||
|
FirExtensionRegistrar.registerExtension(project, FirAllOpenComponentRegistrar())
|
||||||
IrGenerationExtension.registerExtension(project, GeneratedDeclarationsIrBodyFiller())
|
IrGenerationExtension.registerExtension(project, GeneratedDeclarationsIrBodyFiller())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-2
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.parcelize.test.runners
|
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.parcelize.test.services.ParcelizeEnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.bind
|
import org.jetbrains.kotlin.test.bind
|
||||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
@@ -18,7 +17,7 @@ import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
|
|||||||
|
|
||||||
abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() {
|
abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() {
|
||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
baseFirDiagnosticTestConfiguration(frontendFacade = FirFacadeWithParcelizeExtension)
|
baseFirDiagnosticTestConfiguration()
|
||||||
|
|
||||||
defaultDirectives {
|
defaultDirectives {
|
||||||
+FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
|
+FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
|
|||||||
import org.jetbrains.kotlin.test.bind
|
import org.jetbrains.kotlin.test.bind
|
||||||
import org.jetbrains.kotlin.test.builders.*
|
import org.jetbrains.kotlin.test.builders.*
|
||||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.REQUIRES_SEPARATE_PROCESS
|
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.DiagnosticsDirectives.REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
|
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.ClassicFrontendOutputArtifact
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
|
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.FirOutputArtifact
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
|
||||||
import org.jetbrains.kotlin.test.model.*
|
import org.jetbrains.kotlin.test.model.*
|
||||||
@@ -116,7 +116,7 @@ open class AbstractParcelizeFirBoxTest : AbstractParcelizeBoxTestBase<FirOutputA
|
|||||||
TargetBackend.JVM_IR
|
TargetBackend.JVM_IR
|
||||||
) {
|
) {
|
||||||
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
|
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
|
||||||
get() = FirFacadeWithParcelizeExtension
|
get() = ::FirFrontendFacade
|
||||||
|
|
||||||
override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<FirOutputArtifact, IrBackendInput>>
|
override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<FirOutputArtifact, IrBackendInput>>
|
||||||
get() = ::Fir2IrResultsConverter
|
get() = ::Fir2IrResultsConverter
|
||||||
|
|||||||
-16
@@ -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<FirFrontendFacade> = { testServices ->
|
|
||||||
FirFrontendFacade(testServices) {
|
|
||||||
it.registerExtensions(FirParcelizeExtensionRegistrar().configure())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+3
@@ -9,8 +9,10 @@ import com.intellij.openapi.project.Project
|
|||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||||
import org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar
|
import org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar
|
||||||
import org.jetbrains.kotlin.parcelize.ParcelizeFirIrGeneratorExtension
|
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.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
@@ -31,6 +33,7 @@ class ParcelizeEnvironmentConfigurator(
|
|||||||
|
|
||||||
override fun registerCompilerExtensions(project: Project) {
|
override fun registerCompilerExtensions(project: Project) {
|
||||||
if (useFirExtension) {
|
if (useFirExtension) {
|
||||||
|
FirExtensionRegistrar.registerExtension(project, FirParcelizeExtensionRegistrar())
|
||||||
IrGenerationExtension.registerExtension(project, ParcelizeFirIrGeneratorExtension())
|
IrGenerationExtension.registerExtension(project, ParcelizeFirIrGeneratorExtension())
|
||||||
} else {
|
} else {
|
||||||
ParcelizeComponentRegistrar.registerParcelizeComponents(project)
|
ParcelizeComponentRegistrar.registerParcelizeComponents(project)
|
||||||
|
|||||||
Reference in New Issue
Block a user