Skip to content

Commit

Permalink
[IR] Move PHASE_CONFIG key into CommonConfigurationKeys
Browse files Browse the repository at this point in the history
#KT-72927
  • Loading branch information
ivandev0 authored and Space Cloud committed Nov 29, 2024
1 parent 05fdec0 commit c27a909
Show file tree
Hide file tree
Showing 17 changed files with 35 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ package org.jetbrains.kotlin.cli.common
*/

import java.io.File
import org.jetbrains.kotlin.config.phaser.PhaseConfig
import org.jetbrains.kotlin.cli.common.config.ContentRoot
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.CommonConfigurationKeys
Expand Down Expand Up @@ -56,9 +55,6 @@ object CLIConfigurationKeys {
@JvmField
val METADATA_DESTINATION_DIRECTORY = CompilerConfigurationKey.create<File>("metadata destination directory")

@JvmField
val PHASE_CONFIG = CompilerConfigurationKey.create<PhaseConfig>("phase configuration")

@JvmField
val FLEXIBLE_PHASE_CONFIG = CompilerConfigurationKey.create<PhaseConfigurationService>("flexible phase configuration")

Expand Down Expand Up @@ -96,10 +92,6 @@ var CompilerConfiguration.metadataDestinationDirectory: File?
get() = get(CLIConfigurationKeys.METADATA_DESTINATION_DIRECTORY)
set(value) { put(CLIConfigurationKeys.METADATA_DESTINATION_DIRECTORY, requireNotNull(value) { "nullable values are not allowed" }) }

var CompilerConfiguration.phaseConfig: PhaseConfig?
get() = get(CLIConfigurationKeys.PHASE_CONFIG)
set(value) { put(CLIConfigurationKeys.PHASE_CONFIG, requireNotNull(value) { "nullable values are not allowed" }) }

var CompilerConfiguration.flexiblePhaseConfig: PhaseConfigurationService?
get() = get(CLIConfigurationKeys.FLEXIBLE_PHASE_CONFIG)
set(value) { put(CLIConfigurationKeys.FLEXIBLE_PHASE_CONFIG, requireNotNull(value) { "nullable values are not allowed" }) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.createProjectEnvironment
import org.jetbrains.kotlin.cli.jvm.config.ClassicFrontendSpecificJvmConfigurationKeys
import org.jetbrains.kotlin.cli.jvm.config.configureJdkClasspathRoots
import org.jetbrains.kotlin.codegen.CompilationException
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.incremental.components.*
import org.jetbrains.kotlin.load.java.JavaClassesTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
Expand All @@ -50,7 +47,7 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
): ExitCode {
val messageCollector = configuration.getNotNull(CommonConfigurationKeys.MESSAGE_COLLECTOR_KEY)

configuration.put(CLIConfigurationKeys.PHASE_CONFIG, createPhaseConfig(jvmPhases, arguments, messageCollector))
configuration.phaseConfig = createPhaseConfig(jvmPhases, arguments, messageCollector)

if (!configuration.configureJdkHome(arguments)) return COMPILATION_ERROR

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ object KotlinToJVMBytecodeCompiler {

private fun convertToIr(environment: KotlinCoreEnvironment, result: AnalysisResult): Pair<CodegenFactory, CodegenFactory.BackendInput> {
val configuration = environment.configuration
val codegenFactory = JvmIrCodegenFactory(configuration, configuration.get(CLIConfigurationKeys.PHASE_CONFIG))
val codegenFactory = JvmIrCodegenFactory(configuration, configuration.phaseConfig)

val input = CodegenFactory.IrConversionInput(
environment.project,
Expand All @@ -310,7 +310,7 @@ object KotlinToJVMBytecodeCompiler {
internal fun Fir2IrActualizedResult.codegenFactoryWithJvmIrBackendInput(
configuration: CompilerConfiguration
): Pair<CodegenFactory, CodegenFactory.BackendInput> {
val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
val phaseConfig = configuration.phaseConfig
val codegenFactory = JvmIrCodegenFactory(configuration, phaseConfig)
return codegenFactory to JvmIrCodegenFactory.JvmIrBackendInput(
irModuleFragment,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
Expand Down Expand Up @@ -153,7 +154,7 @@ fun generateCodeFromIr(
// IR
val codegenFactory = JvmIrCodegenFactory(
input.configuration,
input.configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
input.configuration.phaseConfig,
)
val project = environment.projectEnvironment.project

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ object CLIConfigurationKeysContainer : KeysContainer("org.jetbrains.kotlin.cli.c

val METADATA_DESTINATION_DIRECTORY by key<File>("metadata destination directory", comment = "See K2MetadataCompilerArguments")

val PHASE_CONFIG by key<PhaseConfig>("phase configuration")

val FLEXIBLE_PHASE_CONFIG by key<PhaseConfigurationService>("flexible phase configuration")

val PATH_TO_KOTLIN_COMPILER_JAR by key<File>("jar of Kotlin compiler in Kotlin plugin", comment = "used in FIR IDE uast tests")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.config.HmppCliModuleStructure
import org.jetbrains.kotlin.config.IrVerificationMode
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.keys.generator.model.KeysContainer
import org.jetbrains.kotlin.config.phaser.PhaseConfig
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.incremental.components.*
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
Expand Down Expand Up @@ -52,4 +53,5 @@ object CommonConfigurationKeysContainer : KeysContainer("org.jetbrains.kotlin.co
val VERIFY_IR by key<IrVerificationMode>("IR verification mode")
val ENABLE_IR_VISIBILITY_CHECKS by key<Boolean>("Check pre-lowering IR for visibility violations")
val ENABLE_IR_VARARG_TYPES_CHECKS by key<Boolean>("Check IR for vararg types mismatches")
val PHASE_CONFIG by key<PhaseConfig>("phase configuration")
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ package org.jetbrains.kotlin.config
*/

import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.phaser.PhaseConfig
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
Expand Down Expand Up @@ -97,6 +98,9 @@ object CommonConfigurationKeys {
@JvmField
val ENABLE_IR_VARARG_TYPES_CHECKS = CompilerConfigurationKey.create<Boolean>("Check IR for vararg types mismatches")

@JvmField
val PHASE_CONFIG = CompilerConfigurationKey.create<PhaseConfig>("phase configuration")

}

var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings
Expand Down Expand Up @@ -199,3 +203,7 @@ var CompilerConfiguration.enableIrVarargTypesChecks: Boolean
get() = getBoolean(CommonConfigurationKeys.ENABLE_IR_VARARG_TYPES_CHECKS)
set(value) { put(CommonConfigurationKeys.ENABLE_IR_VARARG_TYPES_CHECKS, value) }

var CompilerConfiguration.phaseConfig: PhaseConfig?
get() = get(CommonConfigurationKeys.PHASE_CONFIG)
set(value) { put(CommonConfigurationKeys.PHASE_CONFIG, requireNotNull(value) { "nullable values are not allowed" }) }

Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
package org.jetbrains.kotlin.test.frontend.classic

import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForJSIR
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForWasm
import org.jetbrains.kotlin.cli.js.klib.generateIrForKlibSerialization
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.CodegenFactory
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.backend.js.KlibMetadataIncrementalSerializer
Expand Down Expand Up @@ -61,8 +61,7 @@ class ClassicFrontend2IrConverter(

val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)

val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
val codegenFactory = JvmIrCodegenFactory(configuration, phaseConfig)
val codegenFactory = JvmIrCodegenFactory(configuration, configuration.phaseConfig)
val messageCollector = configuration.getNotNull(CommonConfigurationKeys.MESSAGE_COLLECTOR_KEY)
val state = GenerationState.Builder(
project, ClassBuilderFactories.TEST, analysisResult.moduleDescriptor, analysisResult.bindingContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ package org.jetbrains.kotlin.test.frontend.fir
import org.jetbrains.kotlin.backend.common.IrSpecialAnnotationsProvider
import org.jetbrains.kotlin.backend.common.actualizer.IrExtraActualDeclarationExtractor
import org.jetbrains.kotlin.backend.jvm.*
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
Expand Down Expand Up @@ -86,7 +86,7 @@ internal class Fir2IrJvmResultsConverter(testServices: TestServices) : AbstractF
fir2IrResult: Fir2IrActualizedResult,
fir2KlibMetadataSerializer: Fir2KlibMetadataSerializer,
): IrBackendInput {
val phaseConfig = compilerConfiguration.get(CLIConfigurationKeys.PHASE_CONFIG)
val phaseConfig = compilerConfiguration.phaseConfig
// TODO: handle fir from light tree
val sourceFiles = inputArtifact.mainFirFiles.mapNotNull { it.value.sourceFile }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,12 +345,11 @@ open class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentC
val dumpDirectory = testServices.getOrCreateTempDirectory(PhasedIrDumpHandler.DUMPED_IR_FOLDER_NAME)
val phases = module.directives[CodegenTestDirectives.DUMP_IR_FOR_GIVEN_PHASES].toSet()
if (phases.isNotEmpty()) {
val phaseConfig = PhaseConfig(
phaseConfig = PhaseConfig(
toDumpStateBefore = phases,
toDumpStateAfter = phases,
dumpToDirectory = dumpDirectory.absolutePath
)
put(CLIConfigurationKeys.PHASE_CONFIG, phaseConfig)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analyzer.CompilationErrorException
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.getLogger
import org.jetbrains.kotlin.cli.common.output.writeAllTo
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
Expand All @@ -27,6 +26,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
Expand Down Expand Up @@ -138,7 +138,7 @@ object GenerationUtils {

val codegenFactory = JvmIrCodegenFactory(
configuration,
configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
configuration.phaseConfig,
)

val generationState = GenerationState.Builder(
Expand Down Expand Up @@ -197,7 +197,7 @@ object GenerationUtils {
KotlinCodegenFacade.compileCorrectFiles(
files,
generationState,
JvmIrCodegenFactory(configuration, configuration.get(CLIConfigurationKeys.PHASE_CONFIG)),
JvmIrCodegenFactory(configuration, configuration.phaseConfig),
)
}
return generationState
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ package androidx.compose.compiler.plugins.kotlin.facade

import androidx.compose.compiler.plugins.kotlin.TestsCompilerError
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.jvm.compiler.CliBindingTrace
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.CodegenFactory
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.psi.KtFile
Expand Down Expand Up @@ -95,7 +95,7 @@ class K1CompilerFacade(environment: KotlinCoreEnvironment) : KotlinCompilerFacad

val codegenFactory = JvmIrCodegenFactory(
environment.configuration,
environment.configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
environment.configuration.phaseConfig
)

val state = GenerationState.Builder(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.*
Expand Down Expand Up @@ -241,7 +242,7 @@ class K2CompilerFacade(environment: KotlinCoreEnvironment) : KotlinCompilerFacad
generationState.beforeCompile()
val codegenFactory = JvmIrCodegenFactory(
configuration,
configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
configuration.phaseConfig
)
codegenFactory.generateModuleInFrontendIRMode(
generationState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import com.intellij.openapi.project.Project
import com.sun.tools.javac.tree.JCTree
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
Expand All @@ -32,6 +31,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
Expand Down Expand Up @@ -253,7 +253,7 @@ abstract class AbstractKapt3Extension(
KotlinCodegenFacade.compileCorrectFiles(
files,
generationState,
JvmIrCodegenFactory(configuration, configuration[CLIConfigurationKeys.PHASE_CONFIG])
JvmIrCodegenFactory(configuration, configuration.phaseConfig)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import com.intellij.openapi.Disposable
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.checkKotlinPackageUsageForPsi
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
Expand All @@ -22,6 +21,7 @@ import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.CodegenFactory
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
import org.jetbrains.kotlin.diagnostics.impl.SimpleDiagnosticsCollector
import org.jetbrains.kotlin.idea.MainFunctionDetector
Expand Down Expand Up @@ -187,7 +187,7 @@ open class KJvmReplCompilerBase<AnalyzerT : ReplCodeAnalyzerBase>(
}
val codegenFactory = JvmIrCodegenFactory(
compilationState.environment.configuration,
compilationState.environment.configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
compilationState.environment.configuration.phaseConfig,
compilationState.mangler, compilationState.symbolTable, generatorExtensions
)
val generationState = prebuiltState.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ private fun generate(
KotlinCodegenFacade.compileCorrectFiles(
sourceFiles,
it,
JvmIrCodegenFactory(kotlinCompilerConfiguration, kotlinCompilerConfiguration.get(CLIConfigurationKeys.PHASE_CONFIG)),
JvmIrCodegenFactory(kotlinCompilerConfiguration, kotlinCompilerConfiguration.phaseConfig),
)
FirDiagnosticsCompilerResultsReporter.reportToMessageCollector(
diagnosticsReporter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.common.repl.*
Expand All @@ -20,6 +19,7 @@ import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.CodegenFactory
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.phaseConfig
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.renderer.DescriptorRenderer
Expand Down Expand Up @@ -117,7 +117,7 @@ open class GenericReplCompiler(
}
val codegenFactory = JvmIrCodegenFactory(
checker.environment.configuration,
checker.environment.configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
checker.environment.configuration.phaseConfig,
compilerState.mangler, compilerState.symbolTable, generatorExtensions
)

Expand Down

0 comments on commit c27a909

Please sign in to comment.