[K2] Add languageVersionSettings to Fir2IrConfiguration class
This commit is contained in:
@@ -130,7 +130,10 @@ fun transformFirToIr(
|
|||||||
val firResult = FirResult(firOutputs)
|
val firResult = FirResult(firOutputs)
|
||||||
return firResult.convertToIrAndActualize(
|
return firResult.convertToIrAndActualize(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(linkViaSignatures = false),
|
Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings,
|
||||||
|
linkViaSignatures = false
|
||||||
|
),
|
||||||
IrGenerationExtension.getInstances(moduleStructure.project),
|
IrGenerationExtension.getInstances(moduleStructure.project),
|
||||||
signatureComposerCreator = null,
|
signatureComposerCreator = null,
|
||||||
irMangler = JsManglerIr,
|
irMangler = JsManglerIr,
|
||||||
@@ -138,7 +141,6 @@ fun transformFirToIr(
|
|||||||
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
diagnosticReporter = diagnosticsReporter,
|
diagnosticReporter = diagnosticsReporter,
|
||||||
languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings,
|
|
||||||
fir2IrResultPostCompute = {
|
fir2IrResultPostCompute = {
|
||||||
(this.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
(this.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -154,6 +154,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
|
|
||||||
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = moduleConfiguration.languageVersionSettings,
|
||||||
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
||||||
)
|
)
|
||||||
val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm(
|
val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm(
|
||||||
@@ -161,7 +162,6 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
irGenerationExtensions,
|
irGenerationExtensions,
|
||||||
diagnosticsReporter,
|
diagnosticsReporter,
|
||||||
moduleConfiguration.languageVersionSettings
|
|
||||||
)
|
)
|
||||||
|
|
||||||
performanceManager?.notifyIRTranslationFinished()
|
performanceManager?.notifyIRTranslationFinished()
|
||||||
|
|||||||
@@ -232,12 +232,12 @@ fun convertAnalyzedFirToIr(
|
|||||||
IrGenerationExtension.getInstances(it)
|
IrGenerationExtension.getInstances(it)
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = input.configuration.languageVersionSettings,
|
||||||
linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
||||||
)
|
)
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) =
|
val (irModuleFragment, components, pluginContext, irActualizedResult) =
|
||||||
analysisResults.convertToIrAndActualizeForJvm(
|
analysisResults.convertToIrAndActualizeForJvm(
|
||||||
extensions, fir2IrConfiguration, irGenerationExtensions,
|
extensions, fir2IrConfiguration, irGenerationExtensions, environment.diagnosticsReporter,
|
||||||
environment.diagnosticsReporter, input.configuration.languageVersionSettings
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return ModuleCompilerIrBackendInput(
|
return ModuleCompilerIrBackendInput(
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ fun FirResult.convertToIrAndActualizeForJvm(
|
|||||||
fir2IrConfiguration: Fir2IrConfiguration,
|
fir2IrConfiguration: Fir2IrConfiguration,
|
||||||
irGeneratorExtensions: Collection<IrGenerationExtension>,
|
irGeneratorExtensions: Collection<IrGenerationExtension>,
|
||||||
diagnosticReporter: DiagnosticReporter,
|
diagnosticReporter: DiagnosticReporter,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
): Fir2IrActualizedResult = this.convertToIrAndActualize(
|
): Fir2IrActualizedResult = this.convertToIrAndActualize(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
@@ -59,7 +58,6 @@ fun FirResult.convertToIrAndActualizeForJvm(
|
|||||||
firManglerCreator = { FirJvmKotlinMangler() },
|
firManglerCreator = { FirJvmKotlinMangler() },
|
||||||
visibilityConverter = FirJvmVisibilityConverter,
|
visibilityConverter = FirJvmVisibilityConverter,
|
||||||
diagnosticReporter = diagnosticReporter,
|
diagnosticReporter = diagnosticReporter,
|
||||||
languageVersionSettings = languageVersionSettings,
|
|
||||||
kotlinBuiltIns = DefaultBuiltIns.Instance,
|
kotlinBuiltIns = DefaultBuiltIns.Instance,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -73,7 +71,6 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
visibilityConverter: Fir2IrVisibilityConverter,
|
visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
kotlinBuiltIns: KotlinBuiltIns,
|
kotlinBuiltIns: KotlinBuiltIns,
|
||||||
diagnosticReporter: DiagnosticReporter,
|
diagnosticReporter: DiagnosticReporter,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
fir2IrResultPostCompute: Fir2IrResult.() -> Unit = {},
|
fir2IrResultPostCompute: Fir2IrResult.() -> Unit = {},
|
||||||
): Fir2IrActualizedResult {
|
): Fir2IrActualizedResult {
|
||||||
val fir2IrResult: Fir2IrResult
|
val fir2IrResult: Fir2IrResult
|
||||||
@@ -140,7 +137,7 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
fir2IrResult.irModuleFragment,
|
fir2IrResult.irModuleFragment,
|
||||||
commonIrOutputs.map { it.irModuleFragment },
|
commonIrOutputs.map { it.irModuleFragment },
|
||||||
diagnosticReporter,
|
diagnosticReporter,
|
||||||
languageVersionSettings
|
fir2IrConfiguration.languageVersionSettings
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,7 +158,7 @@ private fun ModuleCompilerAnalyzedOutput.convertToIr(
|
|||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
||||||
session, scopeSession, fir,
|
session, scopeSession, fir,
|
||||||
session.languageVersionSettings, fir2IrExtensions, fir2IrConfiguration,
|
fir2IrExtensions, fir2IrConfiguration,
|
||||||
irMangler, IrFactoryImpl, visibilityConverter,
|
irMangler, IrFactoryImpl, visibilityConverter,
|
||||||
Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation for other backends.
|
Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation for other backends.
|
||||||
irGeneratorExtensions,
|
irGeneratorExtensions,
|
||||||
|
|||||||
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
|
|
||||||
data class Fir2IrConfiguration(
|
data class Fir2IrConfiguration(
|
||||||
|
val languageVersionSettings: LanguageVersionSettings,
|
||||||
val linkViaSignatures: Boolean
|
val linkViaSignatures: Boolean
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -440,7 +440,6 @@ class Fir2IrConverter(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firFiles: List<FirFile>,
|
firFiles: List<FirFile>,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
fir2IrExtensions: Fir2IrExtensions,
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
fir2IrConfiguration: Fir2IrConfiguration,
|
fir2IrConfiguration: Fir2IrConfiguration,
|
||||||
irMangler: KotlinMangler.IrMangler,
|
irMangler: KotlinMangler.IrMangler,
|
||||||
@@ -471,8 +470,8 @@ class Fir2IrConverter(
|
|||||||
components.visibilityConverter = visibilityConverter
|
components.visibilityConverter = visibilityConverter
|
||||||
components.typeConverter = Fir2IrTypeConverter(components)
|
components.typeConverter = Fir2IrTypeConverter(components)
|
||||||
val irBuiltIns = initializedIrBuiltIns ?: IrBuiltInsOverFir(
|
val irBuiltIns = initializedIrBuiltIns ?: IrBuiltInsOverFir(
|
||||||
components, languageVersionSettings, moduleDescriptor, irMangler,
|
components, fir2IrConfiguration.languageVersionSettings, moduleDescriptor, irMangler,
|
||||||
languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources) || kotlinBuiltIns !== DefaultBuiltIns.Instance
|
fir2IrConfiguration.languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources) || kotlinBuiltIns !== DefaultBuiltIns.Instance
|
||||||
)
|
)
|
||||||
components.irBuiltIns = irBuiltIns
|
components.irBuiltIns = irBuiltIns
|
||||||
val conversionScope = Fir2IrConversionScope()
|
val conversionScope = Fir2IrConversionScope()
|
||||||
|
|||||||
+5
-6
@@ -274,15 +274,14 @@ class IncrementalFirJvmCompilerRunner(
|
|||||||
performanceManager?.notifyIRTranslationStarted()
|
performanceManager?.notifyIRTranslationStarted()
|
||||||
|
|
||||||
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(linkViaSignatures = false)
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
linkViaSignatures = false
|
||||||
|
)
|
||||||
val irGenerationExtensions =
|
val irGenerationExtensions =
|
||||||
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) = cycleResult.convertToIrAndActualizeForJvm(
|
val (irModuleFragment, components, pluginContext, irActualizedResult) = cycleResult.convertToIrAndActualizeForJvm(
|
||||||
extensions,
|
extensions, fir2IrConfiguration, irGenerationExtensions, compilerEnvironment.diagnosticsReporter,
|
||||||
fir2IrConfiguration,
|
|
||||||
irGenerationExtensions,
|
|
||||||
compilerEnvironment.diagnosticsReporter,
|
|
||||||
configuration.languageVersionSettings
|
|
||||||
)
|
)
|
||||||
|
|
||||||
performanceManager?.notifyIRTranslationFinished()
|
performanceManager?.notifyIRTranslationFinished()
|
||||||
|
|||||||
+5
-2
@@ -147,11 +147,14 @@ fun AbstractFirAnalyzerFacade.convertToJsIr(
|
|||||||
val libraries = resolveJsLibraries(module, testServices, configuration)
|
val libraries = resolveJsLibraries(module, testServices, configuration)
|
||||||
val (dependencies, builtIns) = loadResolvedLibraries(libraries, configuration.languageVersionSettings, testServices)
|
val (dependencies, builtIns) = loadResolvedLibraries(libraries, configuration.languageVersionSettings, testServices)
|
||||||
|
|
||||||
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
linkViaSignatures = false
|
||||||
|
)
|
||||||
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
||||||
session, scopeSession, firFiles.toList(),
|
session, scopeSession, firFiles.toList(),
|
||||||
languageVersionSettings,
|
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(linkViaSignatures = false),
|
fir2IrConfiguration,
|
||||||
JsManglerIr, IrFactoryImpl,
|
JsManglerIr, IrFactoryImpl,
|
||||||
Fir2IrVisibilityConverter.Default,
|
Fir2IrVisibilityConverter.Default,
|
||||||
Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation
|
Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation
|
||||||
|
|||||||
+4
-2
@@ -304,8 +304,10 @@ open class FirFrontendFacade(
|
|||||||
val enablePluginPhases = FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES in module.directives
|
val enablePluginPhases = FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES in module.directives
|
||||||
val firAnalyzerFacade = FirAnalyzerFacade(
|
val firAnalyzerFacade = FirAnalyzerFacade(
|
||||||
moduleBasedSession,
|
moduleBasedSession,
|
||||||
module.languageVersionSettings,
|
Fir2IrConfiguration(
|
||||||
Fir2IrConfiguration(linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE),
|
languageVersionSettings = module.languageVersionSettings,
|
||||||
|
linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE
|
||||||
|
),
|
||||||
ktFiles,
|
ktFiles,
|
||||||
lightTreeFiles,
|
lightTreeFiles,
|
||||||
IrGenerationExtension.getInstances(project),
|
IrGenerationExtension.getInstances(project),
|
||||||
|
|||||||
@@ -122,8 +122,10 @@ object GenerationUtils {
|
|||||||
// TODO: add running checkers and check that it's safe to compile
|
// TODO: add running checkers and check that it's safe to compile
|
||||||
val firAnalyzerFacade = FirAnalyzerFacade(
|
val firAnalyzerFacade = FirAnalyzerFacade(
|
||||||
session,
|
session,
|
||||||
configuration.languageVersionSettings,
|
Fir2IrConfiguration(
|
||||||
Fir2IrConfiguration(linkViaSignatures = false),
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
linkViaSignatures = false
|
||||||
|
),
|
||||||
files,
|
files,
|
||||||
emptyList(),
|
emptyList(),
|
||||||
IrGenerationExtension.getInstances(project),
|
IrGenerationExtension.getInstances(project),
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ abstract class AbstractFirAnalyzerFacade {
|
|||||||
|
|
||||||
class FirAnalyzerFacade(
|
class FirAnalyzerFacade(
|
||||||
val session: FirSession,
|
val session: FirSession,
|
||||||
val languageVersionSettings: LanguageVersionSettings,
|
|
||||||
val fir2IrConfiguration: Fir2IrConfiguration,
|
val fir2IrConfiguration: Fir2IrConfiguration,
|
||||||
val ktFiles: Collection<KtFile> = emptyList(), // may be empty if light tree mode enabled
|
val ktFiles: Collection<KtFile> = emptyList(), // may be empty if light tree mode enabled
|
||||||
val lightTreeFiles: Collection<LightTreeFile> = emptyList(), // may be empty if light tree mode disabled
|
val lightTreeFiles: Collection<LightTreeFile> = emptyList(), // may be empty if light tree mode disabled
|
||||||
@@ -114,7 +113,6 @@ class FirAnalyzerFacade(
|
|||||||
|
|
||||||
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
||||||
session, _scopeSession!!, firFiles!!,
|
session, _scopeSession!!, firFiles!!,
|
||||||
languageVersionSettings,
|
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
JvmIrMangler, IrFactoryImpl,
|
JvmIrMangler, IrFactoryImpl,
|
||||||
|
|||||||
+4
-2
@@ -73,14 +73,16 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
|
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize(
|
val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(linkViaSignatures = false),
|
Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
linkViaSignatures = false
|
||||||
|
),
|
||||||
IrGenerationExtension.getInstances(config.project),
|
IrGenerationExtension.getInstances(config.project),
|
||||||
signatureComposerCreator = null,
|
signatureComposerCreator = null,
|
||||||
irMangler = KonanManglerIr,
|
irMangler = KonanManglerIr,
|
||||||
firManglerCreator = { FirNativeKotlinMangler() },
|
firManglerCreator = { FirNativeKotlinMangler() },
|
||||||
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
diagnosticReporter = diagnosticsReporter,
|
diagnosticReporter = diagnosticsReporter,
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
|
||||||
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
fir2IrResultPostCompute = {
|
fir2IrResultPostCompute = {
|
||||||
// it's important to compare manglers before actualization, since IR will be actualized, while FIR won't
|
// it's important to compare manglers before actualization, since IR will be actualized, while FIR won't
|
||||||
|
|||||||
Reference in New Issue
Block a user