[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
+6
-2
@@ -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<FirExtensionRegistrar>(
|
||||
name = "org.jetbrains.kotlin.fir.extensions.firExtensionRegistrar",
|
||||
extensionClass = FirExtensionRegistrar::class.java
|
||||
) {
|
||||
internal val AVAILABLE_EXTENSIONS = listOf(
|
||||
FirStatusTransformerExtension::class,
|
||||
FirDeclarationGenerationExtension::class,
|
||||
FirAdditionalCheckersExtension::class,
|
||||
|
||||
@@ -84,6 +84,7 @@ object FirSessionFactory {
|
||||
librariesScope: AbstractProjectFileSearchScope,
|
||||
lookupTracker: LookupTracker?,
|
||||
providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?,
|
||||
extensionRegistrars: List<FirExtensionRegistrar>,
|
||||
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<FirExtensionRegistrar>,
|
||||
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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user