[Plugins] Introduce new API for registering compiler plugins

Original `ComponentRegistrar` exposes Project to its registration method,
  so plugins should manually register extensions to it. To prepare for
  possible unbound compiler from Project API in future new  `K2ComponentRegistrar`
  introduced which provides registration method without Project at all
This commit is contained in:
Dmitriy Novozhilov
2022-06-07 10:23:09 +03:00
committed by teamcity
parent bb996c1b27
commit 8b42638afa
56 changed files with 392 additions and 191 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.analysis.api.fir.utils
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
import org.jetbrains.kotlin.config.AnalysisFlag
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageVersion
@@ -58,9 +59,20 @@ private class EnabledByDirectiveConfiguratorDecorator(
languageVersion: LanguageVersion
): Map<AnalysisFlag<*>, Any?> = original.provideAdditionalAnalysisFlags(directives, languageVersion)
override fun registerCompilerExtensions(project: Project, module: TestModule, configuration: CompilerConfiguration) {
override fun legacyRegisterCompilerExtensions(project: Project, module: TestModule, configuration: CompilerConfiguration) {
if (directive !in module.directives) return
original.registerCompilerExtensions(project, module, configuration)
original.legacyRegisterCompilerExtensions(project, module, configuration)
}
override fun CompilerPluginRegistrar.ExtensionStorage.registerCompilerExtensions(
module: TestModule,
configuration: CompilerConfiguration
) {
if (directive !in module.directives) return
with(original) {
this@registerCompilerExtensions.registerCompilerExtensions(module, configuration)
}
}
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.test.base
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
import org.jetbrains.kotlin.config.AnalysisFlag
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageVersion
@@ -58,9 +59,20 @@ private class EnabledByDirectiveConfiguratorDecorator(
languageVersion: LanguageVersion
): Map<AnalysisFlag<*>, Any?> = original.provideAdditionalAnalysisFlags(directives, languageVersion)
override fun registerCompilerExtensions(project: Project, module: TestModule, configuration: CompilerConfiguration) {
override fun legacyRegisterCompilerExtensions(project: Project, module: TestModule, configuration: CompilerConfiguration) {
if (directive !in module.directives) return
original.registerCompilerExtensions(project, module, configuration)
original.legacyRegisterCompilerExtensions(project, module, configuration)
}
}
override fun CompilerPluginRegistrar.ExtensionStorage.registerCompilerExtensions(
module: TestModule,
configuration: CompilerConfiguration
) {
if (directive !in module.directives) return
with(original) {
this@registerCompilerExtensions.registerCompilerExtensions(module, configuration)
}
}
}