[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:
Ivan Kylchik
2023-07-16 18:54:41 +02:00
committed by Space Team
parent 6e45c9d4c7
commit 84159596bd
12 changed files with 57 additions and 33 deletions
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
@@ -82,13 +83,15 @@ class Fir2IrJsResultsConverter(
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
val irMangler = JsManglerIr
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
val (irModuleFragment, components, pluginContext) =
part.firAnalyzerFacade.result.outputs.single().convertToJsIr(
testServices,
module,
configuration,
testServices,
diagnosticReporter,
commonMemberStorage,
irBuiltIns,
)
@@ -119,7 +122,7 @@ class Fir2IrJsResultsConverter(
sourceFiles,
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
expectDescriptorToSymbol = mutableMapOf(),
diagnosticReporter = DiagnosticReporterFactory.createReporter(),
diagnosticReporter = diagnosticReporter,
hasErrors = inputArtifact.hasErrors,
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
irMangler = irMangler,
@@ -150,9 +153,10 @@ class Fir2IrJsResultsConverter(
}
fun ModuleCompilerAnalyzedOutput.convertToJsIr(
testServices: TestServices,
module: TestModule,
configuration: CompilerConfiguration,
testServices: TestServices,
diagnosticReporter: DiagnosticReporter,
commonMemberStorage: Fir2IrCommonMemberStorage,
irBuiltIns: IrBuiltInsOverFir?
): Fir2IrResult {
@@ -162,6 +166,7 @@ fun ModuleCompilerAnalyzedOutput.convertToJsIr(
val fir2IrConfiguration = Fir2IrConfiguration(
languageVersionSettings = configuration.languageVersionSettings,
diagnosticReporter = diagnosticReporter,
linkViaSignatures = true,
evaluatedConstTracker = configuration
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
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.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
@@ -92,17 +93,18 @@ class Fir2IrJvmResultsConverter(
.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(generateSignatures), FirJvmKotlinMangler())
var irBuiltIns: IrBuiltInsOverFir? = null
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
for ((index, firOutputPart) in inputArtifact.partsForDependsOnModules.withIndex()) {
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module)
val fir2IrConfiguration = Fir2IrConfiguration(
languageVersionSettings = module.languageVersionSettings,
diagnosticReporter = diagnosticReporter,
linkViaSignatures = compilerConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
evaluatedConstTracker = compilerConfiguration
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
inlineConstTracker = compilerConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
)
val (irModuleFragment, components, pluginContext) = firOutputPart.firAnalyzerFacade.result.outputs.single().convertToIr(
fir2IrExtensions,
fir2IrConfiguration,
@@ -139,6 +141,8 @@ class Fir2IrJvmResultsConverter(
true
).jvmBackendClassResolver(
FirJvmBackendClassResolver(mainModuleComponents)
).diagnosticReporter(
diagnosticReporter
).build()
val result = IrBackendInput.JvmIrBackendInput(
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
@@ -80,13 +81,15 @@ class Fir2IrWasmResultsConverter(
var irBuiltIns: IrBuiltInsOverFir? = null
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
val (irModuleFragment, components, pluginContext) =
part.firAnalyzerFacade.result.outputs.single().convertToWasmIr(
testServices,
module,
configuration,
testServices,
diagnosticReporter,
commonMemberStorage,
irBuiltIns,
)
@@ -117,7 +120,7 @@ class Fir2IrWasmResultsConverter(
sourceFiles,
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
expectDescriptorToSymbol = mutableMapOf(),
diagnosticReporter = DiagnosticReporterFactory.createReporter(),
diagnosticReporter = diagnosticReporter,
hasErrors = inputArtifact.hasErrors,
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
irMangler = JsManglerIr,
@@ -146,9 +149,10 @@ class Fir2IrWasmResultsConverter(
}
fun ModuleCompilerAnalyzedOutput.convertToWasmIr(
testServices: TestServices,
module: TestModule,
configuration: CompilerConfiguration,
testServices: TestServices,
diagnosticReporter: DiagnosticReporter,
commonMemberStorage: Fir2IrCommonMemberStorage,
irBuiltIns: IrBuiltInsOverFir?
): Fir2IrResult {
@@ -158,6 +162,7 @@ fun ModuleCompilerAnalyzedOutput.convertToWasmIr(
val fir2IrConfiguration = Fir2IrConfiguration(
languageVersionSettings = configuration.languageVersionSettings,
diagnosticReporter = diagnosticReporter,
linkViaSignatures = true,
evaluatedConstTracker = configuration
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),