[FIR] Pass diagnosticReporter in Fir2IrConfiguration
This parameter will be used to report diagnostics from constant evaluator, in addition to report diagnostic from actualizer.
This commit is contained in:
+7
-1
@@ -24,10 +24,13 @@ import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||||
import org.jetbrains.kotlin.codegen.CodegenFactory
|
import org.jetbrains.kotlin.codegen.CodegenFactory
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticMarker
|
import org.jetbrains.kotlin.diagnostics.DiagnosticMarker
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.diagnostics.KtPsiDiagnostic
|
import org.jetbrains.kotlin.diagnostics.KtPsiDiagnostic
|
||||||
import org.jetbrains.kotlin.diagnostics.Severity
|
import org.jetbrains.kotlin.diagnostics.Severity
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
||||||
@@ -80,9 +83,11 @@ internal class KtFirCompilerFacility(
|
|||||||
|
|
||||||
val generateClassFilter = SingleFileGenerateClassFilter(file, compilationPeerData.inlinedClasses)
|
val generateClassFilter = SingleFileGenerateClassFilter(file, compilationPeerData.inlinedClasses)
|
||||||
val fir2IrExtensions = JvmFir2IrExtensions(effectiveConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val fir2IrExtensions = JvmFir2IrExtensions(effectiveConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
|
val diagnosticsReporter = DiagnosticReporterFactory.createPendingReporter()
|
||||||
|
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
effectiveConfiguration.languageVersionSettings,
|
effectiveConfiguration.languageVersionSettings,
|
||||||
|
diagnosticsReporter,
|
||||||
linkViaSignatures = false,
|
linkViaSignatures = false,
|
||||||
effectiveConfiguration[CommonConfigurationKeys.EVALUATED_CONST_TRACKER] ?: EvaluatedConstTracker.create(),
|
effectiveConfiguration[CommonConfigurationKeys.EVALUATED_CONST_TRACKER] ?: EvaluatedConstTracker.create(),
|
||||||
effectiveConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER]
|
effectiveConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER]
|
||||||
@@ -117,6 +122,7 @@ internal class KtFirCompilerFacility(
|
|||||||
effectiveConfiguration,
|
effectiveConfiguration,
|
||||||
).generateDeclaredClassFilter(generateClassFilter)
|
).generateDeclaredClassFilter(generateClassFilter)
|
||||||
.codegenFactory(codegenFactory)
|
.codegenFactory(codegenFactory)
|
||||||
|
.diagnosticReporter(diagnosticsReporter)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -229,6 +229,7 @@ fun transformFirToIr(
|
|||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(
|
Fir2IrConfiguration(
|
||||||
languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings,
|
languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticsReporter,
|
||||||
linkViaSignatures = false,
|
linkViaSignatures = false,
|
||||||
evaluatedConstTracker = moduleStructure.compilerConfiguration
|
evaluatedConstTracker = moduleStructure.compilerConfiguration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
@@ -240,12 +241,10 @@ fun transformFirToIr(
|
|||||||
firMangler = FirJsKotlinMangler(),
|
firMangler = FirJsKotlinMangler(),
|
||||||
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
diagnosticReporter = diagnosticsReporter,
|
actualizerTypeContextProvider = ::IrTypeSystemContextImpl
|
||||||
actualizerTypeContextProvider = ::IrTypeSystemContextImpl,
|
) {
|
||||||
fir2IrResultPostCompute = {
|
(this.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
||||||
(this.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Fir2KlibSerializer(
|
private class Fir2KlibSerializer(
|
||||||
|
|||||||
+1
-1
@@ -155,6 +155,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = moduleConfiguration.languageVersionSettings,
|
languageVersionSettings = moduleConfiguration.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticsReporter,
|
||||||
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||||
evaluatedConstTracker = moduleConfiguration
|
evaluatedConstTracker = moduleConfiguration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
@@ -164,7 +165,6 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
irGenerationExtensions,
|
irGenerationExtensions,
|
||||||
diagnosticsReporter,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
performanceManager?.notifyIRTranslationFinished()
|
performanceManager?.notifyIRTranslationFinished()
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ fun convertAnalyzedFirToIr(
|
|||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = input.configuration.languageVersionSettings,
|
languageVersionSettings = input.configuration.languageVersionSettings,
|
||||||
|
diagnosticReporter = environment.diagnosticsReporter,
|
||||||
linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||||
evaluatedConstTracker = input.configuration
|
evaluatedConstTracker = input.configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
@@ -187,7 +188,7 @@ fun convertAnalyzedFirToIr(
|
|||||||
)
|
)
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) =
|
val (irModuleFragment, components, pluginContext, irActualizedResult) =
|
||||||
analysisResults.convertToIrAndActualizeForJvm(
|
analysisResults.convertToIrAndActualizeForJvm(
|
||||||
extensions, fir2IrConfiguration, irGenerationExtensions, environment.diagnosticsReporter,
|
extensions, fir2IrConfiguration, irGenerationExtensions,
|
||||||
)
|
)
|
||||||
|
|
||||||
return ModuleCompilerIrBackendInput(
|
return ModuleCompilerIrBackendInput(
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.backend.jvm.JvmIrTypeSystemContext
|
|||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.*
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider
|
import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider
|
||||||
@@ -69,7 +68,6 @@ fun FirResult.convertToIrAndActualizeForJvm(
|
|||||||
fir2IrExtensions: Fir2IrExtensions,
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
fir2IrConfiguration: Fir2IrConfiguration,
|
fir2IrConfiguration: Fir2IrConfiguration,
|
||||||
irGeneratorExtensions: Collection<IrGenerationExtension>,
|
irGeneratorExtensions: Collection<IrGenerationExtension>,
|
||||||
diagnosticReporter: DiagnosticReporter,
|
|
||||||
): Fir2IrActualizedResult = this.convertToIrAndActualize(
|
): Fir2IrActualizedResult = this.convertToIrAndActualize(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
@@ -78,7 +76,6 @@ fun FirResult.convertToIrAndActualizeForJvm(
|
|||||||
irMangler = JvmIrMangler,
|
irMangler = JvmIrMangler,
|
||||||
firMangler = FirJvmKotlinMangler(),
|
firMangler = FirJvmKotlinMangler(),
|
||||||
visibilityConverter = FirJvmVisibilityConverter,
|
visibilityConverter = FirJvmVisibilityConverter,
|
||||||
diagnosticReporter = diagnosticReporter,
|
|
||||||
kotlinBuiltIns = DefaultBuiltIns.Instance,
|
kotlinBuiltIns = DefaultBuiltIns.Instance,
|
||||||
actualizerTypeContextProvider = ::JvmIrTypeSystemContext,
|
actualizerTypeContextProvider = ::JvmIrTypeSystemContext,
|
||||||
)
|
)
|
||||||
@@ -101,7 +98,6 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
firMangler: FirMangler,
|
firMangler: FirMangler,
|
||||||
visibilityConverter: Fir2IrVisibilityConverter,
|
visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
kotlinBuiltIns: KotlinBuiltIns,
|
kotlinBuiltIns: KotlinBuiltIns,
|
||||||
diagnosticReporter: DiagnosticReporter,
|
|
||||||
actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext,
|
actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext,
|
||||||
fir2IrResultPostCompute: Fir2IrResult.() -> Unit = {},
|
fir2IrResultPostCompute: Fir2IrResult.() -> Unit = {},
|
||||||
): Fir2IrActualizedResult {
|
): Fir2IrActualizedResult {
|
||||||
@@ -161,7 +157,7 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
actualizationResult = IrActualizer.actualize(
|
actualizationResult = IrActualizer.actualize(
|
||||||
fir2IrResult.irModuleFragment,
|
fir2IrResult.irModuleFragment,
|
||||||
commonIrOutputs.map { it.irModuleFragment },
|
commonIrOutputs.map { it.irModuleFragment },
|
||||||
diagnosticReporter,
|
fir2IrConfiguration.diagnosticReporter,
|
||||||
actualizerTypeContextProvider(fir2IrResult.irModuleFragment.irBuiltins),
|
actualizerTypeContextProvider(fir2IrResult.irModuleFragment.irBuiltins),
|
||||||
fir2IrConfiguration.languageVersionSettings
|
fir2IrConfiguration.languageVersionSettings
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -18,10 +18,12 @@ package org.jetbrains.kotlin.fir.backend
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
||||||
|
|
||||||
data class Fir2IrConfiguration(
|
data class Fir2IrConfiguration(
|
||||||
val languageVersionSettings: LanguageVersionSettings,
|
val languageVersionSettings: LanguageVersionSettings,
|
||||||
|
val diagnosticReporter: DiagnosticReporter,
|
||||||
val linkViaSignatures: Boolean,
|
val linkViaSignatures: Boolean,
|
||||||
val evaluatedConstTracker: EvaluatedConstTracker,
|
val evaluatedConstTracker: EvaluatedConstTracker,
|
||||||
val inlineConstTracker: InlineConstTracker?,
|
val inlineConstTracker: InlineConstTracker?,
|
||||||
|
|||||||
+2
-1
@@ -276,6 +276,7 @@ open class IncrementalFirJvmCompilerRunner(
|
|||||||
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
diagnosticReporter = compilerEnvironment.diagnosticsReporter,
|
||||||
linkViaSignatures = false,
|
linkViaSignatures = false,
|
||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
@@ -284,7 +285,7 @@ open class IncrementalFirJvmCompilerRunner(
|
|||||||
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, fir2IrConfiguration, irGenerationExtensions, compilerEnvironment.diagnosticsReporter,
|
extensions, fir2IrConfiguration, irGenerationExtensions,
|
||||||
)
|
)
|
||||||
|
|
||||||
performanceManager?.notifyIRTranslationFinished()
|
performanceManager?.notifyIRTranslationFinished()
|
||||||
|
|||||||
+8
-3
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.*
|
||||||
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
|
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
|
||||||
@@ -82,13 +83,15 @@ class Fir2IrJsResultsConverter(
|
|||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
|
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
|
||||||
|
|
||||||
val irMangler = JsManglerIr
|
val irMangler = JsManglerIr
|
||||||
|
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
|
||||||
|
|
||||||
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
||||||
val (irModuleFragment, components, pluginContext) =
|
val (irModuleFragment, components, pluginContext) =
|
||||||
part.firAnalyzerFacade.result.outputs.single().convertToJsIr(
|
part.firAnalyzerFacade.result.outputs.single().convertToJsIr(
|
||||||
|
testServices,
|
||||||
module,
|
module,
|
||||||
configuration,
|
configuration,
|
||||||
testServices,
|
diagnosticReporter,
|
||||||
commonMemberStorage,
|
commonMemberStorage,
|
||||||
irBuiltIns,
|
irBuiltIns,
|
||||||
)
|
)
|
||||||
@@ -119,7 +122,7 @@ class Fir2IrJsResultsConverter(
|
|||||||
sourceFiles,
|
sourceFiles,
|
||||||
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
|
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
|
||||||
expectDescriptorToSymbol = mutableMapOf(),
|
expectDescriptorToSymbol = mutableMapOf(),
|
||||||
diagnosticReporter = DiagnosticReporterFactory.createReporter(),
|
diagnosticReporter = diagnosticReporter,
|
||||||
hasErrors = inputArtifact.hasErrors,
|
hasErrors = inputArtifact.hasErrors,
|
||||||
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
|
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
|
||||||
irMangler = irMangler,
|
irMangler = irMangler,
|
||||||
@@ -150,9 +153,10 @@ class Fir2IrJsResultsConverter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun ModuleCompilerAnalyzedOutput.convertToJsIr(
|
fun ModuleCompilerAnalyzedOutput.convertToJsIr(
|
||||||
|
testServices: TestServices,
|
||||||
module: TestModule,
|
module: TestModule,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
testServices: TestServices,
|
diagnosticReporter: DiagnosticReporter,
|
||||||
commonMemberStorage: Fir2IrCommonMemberStorage,
|
commonMemberStorage: Fir2IrCommonMemberStorage,
|
||||||
irBuiltIns: IrBuiltInsOverFir?
|
irBuiltIns: IrBuiltInsOverFir?
|
||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
@@ -162,6 +166,7 @@ fun ModuleCompilerAnalyzedOutput.convertToJsIr(
|
|||||||
|
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticReporter,
|
||||||
linkViaSignatures = true,
|
linkViaSignatures = true,
|
||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
|
|||||||
+5
-1
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
||||||
@@ -92,17 +93,18 @@ class Fir2IrJvmResultsConverter(
|
|||||||
.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(generateSignatures), FirJvmKotlinMangler())
|
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(generateSignatures), FirJvmKotlinMangler())
|
||||||
var irBuiltIns: IrBuiltInsOverFir? = null
|
var irBuiltIns: IrBuiltInsOverFir? = null
|
||||||
|
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
|
||||||
|
|
||||||
for ((index, firOutputPart) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
for ((index, firOutputPart) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
||||||
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module)
|
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = module.languageVersionSettings,
|
languageVersionSettings = module.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticReporter,
|
||||||
linkViaSignatures = compilerConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
linkViaSignatures = compilerConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||||
evaluatedConstTracker = compilerConfiguration
|
evaluatedConstTracker = compilerConfiguration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = compilerConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
inlineConstTracker = compilerConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
||||||
)
|
)
|
||||||
|
|
||||||
val (irModuleFragment, components, pluginContext) = firOutputPart.firAnalyzerFacade.result.outputs.single().convertToIr(
|
val (irModuleFragment, components, pluginContext) = firOutputPart.firAnalyzerFacade.result.outputs.single().convertToIr(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
@@ -139,6 +141,8 @@ class Fir2IrJvmResultsConverter(
|
|||||||
true
|
true
|
||||||
).jvmBackendClassResolver(
|
).jvmBackendClassResolver(
|
||||||
FirJvmBackendClassResolver(mainModuleComponents)
|
FirJvmBackendClassResolver(mainModuleComponents)
|
||||||
|
).diagnosticReporter(
|
||||||
|
diagnosticReporter
|
||||||
).build()
|
).build()
|
||||||
|
|
||||||
val result = IrBackendInput.JvmIrBackendInput(
|
val result = IrBackendInput.JvmIrBackendInput(
|
||||||
|
|||||||
+8
-3
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.*
|
||||||
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
|
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
|
||||||
@@ -80,13 +81,15 @@ class Fir2IrWasmResultsConverter(
|
|||||||
var irBuiltIns: IrBuiltInsOverFir? = null
|
var irBuiltIns: IrBuiltInsOverFir? = null
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
|
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
|
||||||
|
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
|
||||||
|
|
||||||
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
||||||
val (irModuleFragment, components, pluginContext) =
|
val (irModuleFragment, components, pluginContext) =
|
||||||
part.firAnalyzerFacade.result.outputs.single().convertToWasmIr(
|
part.firAnalyzerFacade.result.outputs.single().convertToWasmIr(
|
||||||
|
testServices,
|
||||||
module,
|
module,
|
||||||
configuration,
|
configuration,
|
||||||
testServices,
|
diagnosticReporter,
|
||||||
commonMemberStorage,
|
commonMemberStorage,
|
||||||
irBuiltIns,
|
irBuiltIns,
|
||||||
)
|
)
|
||||||
@@ -117,7 +120,7 @@ class Fir2IrWasmResultsConverter(
|
|||||||
sourceFiles,
|
sourceFiles,
|
||||||
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
|
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
|
||||||
expectDescriptorToSymbol = mutableMapOf(),
|
expectDescriptorToSymbol = mutableMapOf(),
|
||||||
diagnosticReporter = DiagnosticReporterFactory.createReporter(),
|
diagnosticReporter = diagnosticReporter,
|
||||||
hasErrors = inputArtifact.hasErrors,
|
hasErrors = inputArtifact.hasErrors,
|
||||||
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
|
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
|
||||||
irMangler = JsManglerIr,
|
irMangler = JsManglerIr,
|
||||||
@@ -146,9 +149,10 @@ class Fir2IrWasmResultsConverter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun ModuleCompilerAnalyzedOutput.convertToWasmIr(
|
fun ModuleCompilerAnalyzedOutput.convertToWasmIr(
|
||||||
|
testServices: TestServices,
|
||||||
module: TestModule,
|
module: TestModule,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
testServices: TestServices,
|
diagnosticReporter: DiagnosticReporter,
|
||||||
commonMemberStorage: Fir2IrCommonMemberStorage,
|
commonMemberStorage: Fir2IrCommonMemberStorage,
|
||||||
irBuiltIns: IrBuiltInsOverFir?
|
irBuiltIns: IrBuiltInsOverFir?
|
||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
@@ -158,6 +162,7 @@ fun ModuleCompilerAnalyzedOutput.convertToWasmIr(
|
|||||||
|
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticReporter,
|
||||||
linkViaSignatures = true,
|
linkViaSignatures = true,
|
||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
|
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
|
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
||||||
@@ -126,9 +127,11 @@ object GenerationUtils {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
|
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
|
||||||
|
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticReporter,
|
||||||
linkViaSignatures = linkViaSignatures,
|
linkViaSignatures = linkViaSignatures,
|
||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
@@ -160,6 +163,8 @@ object GenerationUtils {
|
|||||||
true
|
true
|
||||||
).jvmBackendClassResolver(
|
).jvmBackendClassResolver(
|
||||||
FirJvmBackendClassResolver(components)
|
FirJvmBackendClassResolver(components)
|
||||||
|
).diagnosticReporter(
|
||||||
|
diagnosticReporter
|
||||||
).build()
|
).build()
|
||||||
|
|
||||||
generationState.beforeCompile()
|
generationState.beforeCompile()
|
||||||
|
|||||||
+11
-11
@@ -6,8 +6,8 @@ import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDes
|
|||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.phases.Fir2IrOutput
|
import org.jetbrains.kotlin.backend.konan.driver.phases.Fir2IrOutput
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.phases.FirOutput
|
import org.jetbrains.kotlin.backend.konan.driver.phases.FirOutput
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.SymbolOverIrLookupUtils
|
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||||
|
import org.jetbrains.kotlin.backend.konan.ir.SymbolOverIrLookupUtils
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanIdSignaturer
|
import org.jetbrains.kotlin.backend.konan.serialization.KonanIdSignaturer
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc
|
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr
|
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr
|
||||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.isEmpty
|
import org.jetbrains.kotlin.descriptors.isEmpty
|
||||||
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
|
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.*
|
||||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||||
@@ -35,8 +34,8 @@ import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl
|
|||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataFactories
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataFactories
|
||||||
|
import org.jetbrains.kotlin.name.NativeForwardDeclarationKind
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.name.*
|
|
||||||
|
|
||||||
internal val KlibFactories = KlibMetadataFactories(::KonanBuiltIns, DynamicTypeDeserializer)
|
internal val KlibFactories = KlibMetadataFactories(::KonanBuiltIns, DynamicTypeDeserializer)
|
||||||
|
|
||||||
@@ -73,21 +72,22 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
}
|
}
|
||||||
val diagnosticsReporter = DiagnosticReporterFactory.createPendingReporter()
|
val diagnosticsReporter = DiagnosticReporterFactory.createPendingReporter()
|
||||||
|
|
||||||
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
|
diagnosticReporter = diagnosticsReporter,
|
||||||
|
linkViaSignatures = false,
|
||||||
|
evaluatedConstTracker = configuration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
|
inlineConstTracker = null,
|
||||||
|
)
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize(
|
val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(
|
fir2IrConfiguration,
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
|
||||||
linkViaSignatures = false,
|
|
||||||
evaluatedConstTracker = configuration
|
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
|
||||||
inlineConstTracker = null,
|
|
||||||
),
|
|
||||||
IrGenerationExtension.getInstances(config.project),
|
IrGenerationExtension.getInstances(config.project),
|
||||||
signatureComposer = DescriptorSignatureComposerStub(KonanManglerDesc),
|
signatureComposer = DescriptorSignatureComposerStub(KonanManglerDesc),
|
||||||
irMangler = KonanManglerIr,
|
irMangler = KonanManglerIr,
|
||||||
firMangler = FirNativeKotlinMangler(),
|
firMangler = FirNativeKotlinMangler(),
|
||||||
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
diagnosticReporter = diagnosticsReporter,
|
|
||||||
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
actualizerTypeContextProvider = ::IrTypeSystemContextImpl,
|
actualizerTypeContextProvider = ::IrTypeSystemContextImpl,
|
||||||
fir2IrResultPostCompute = {
|
fir2IrResultPostCompute = {
|
||||||
|
|||||||
Reference in New Issue
Block a user