[FIR2IR] De-duplicate creation of Fir2IrConfiguration
This will help to prevent inconsistencies between creating the configuration in the actual compiler pipeline and in compiler tests.
This commit is contained in:
committed by
Space Team
parent
4d4c95b643
commit
a0ba878b1d
+1
-1
@@ -247,7 +247,7 @@ object CodegenTestDirectives : SimpleDirectivesContainer() {
|
||||
|
||||
val ENABLE_IR_FAKE_OVERRIDE_GENERATION by directive(
|
||||
description = """
|
||||
Enables fake-override generation in FIR2IR using IR f/o generator. KT-61514
|
||||
Enables fake-override generation in FIR2IR using IR f/o generator on JVM. KT-61514
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
|
||||
+7
-19
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.library.unresolvedDependencies
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
||||
import org.jetbrains.kotlin.test.model.Frontend2BackendConverter
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
@@ -67,24 +68,6 @@ abstract class AbstractFir2IrNonJvmResultsConverter(
|
||||
}
|
||||
}
|
||||
|
||||
private fun createFir2IrConfiguration(
|
||||
module: TestModule,
|
||||
configuration: CompilerConfiguration,
|
||||
diagnosticReporter: BaseDiagnosticsCollector
|
||||
): Fir2IrConfiguration {
|
||||
return Fir2IrConfiguration(
|
||||
languageVersionSettings = configuration.languageVersionSettings,
|
||||
diagnosticReporter = diagnosticReporter,
|
||||
linkViaSignatures = true,
|
||||
evaluatedConstTracker = configuration
|
||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||
inlineConstTracker = null,
|
||||
expectActualTracker = configuration[CommonConfigurationKeys.EXPECT_ACTUAL_TRACKER],
|
||||
allowNonCachedDeclarations = false,
|
||||
useIrFakeOverrideBuilder = module.shouldUseIrFakeOverrideBuilder()
|
||||
)
|
||||
}
|
||||
|
||||
private fun transformInternal(
|
||||
module: TestModule,
|
||||
inputArtifact: FirOutputArtifact
|
||||
@@ -99,7 +82,12 @@ abstract class AbstractFir2IrNonJvmResultsConverter(
|
||||
val libraries = resolveLibraries(module, compilerConfiguration)
|
||||
val (dependencies, builtIns) = loadResolvedLibraries(libraries, compilerConfiguration.languageVersionSettings, testServices)
|
||||
|
||||
val fir2IrConfiguration = createFir2IrConfiguration(module, compilerConfiguration, diagnosticReporter)
|
||||
val fir2IrConfiguration = Fir2IrConfiguration.forKlibCompilation(
|
||||
compilerConfiguration,
|
||||
diagnosticReporter,
|
||||
// FIXME(KT-64809): This is for irText tests. Remove this when we stop building signatures from FIR entirely.
|
||||
linkViaSignatures = LanguageSettingsDirectives.LINK_VIA_SIGNATURES in module.directives,
|
||||
)
|
||||
val fir2irResult = inputArtifact.toFirResult().convertToIrAndActualize(
|
||||
Fir2IrExtensions.Default,
|
||||
fir2IrConfiguration,
|
||||
|
||||
+1
-11
@@ -83,17 +83,7 @@ class Fir2IrJvmResultsConverter(
|
||||
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
|
||||
|
||||
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],
|
||||
expectActualTracker = compilerConfiguration[CommonConfigurationKeys.EXPECT_ACTUAL_TRACKER],
|
||||
allowNonCachedDeclarations = false,
|
||||
useIrFakeOverrideBuilder = module.shouldUseIrFakeOverrideBuilder(),
|
||||
)
|
||||
val fir2IrConfiguration = Fir2IrConfiguration.forJvmCompilation(compilerConfiguration, diagnosticReporter)
|
||||
|
||||
val fir2irResult = inputArtifact.toFirResult().convertToIrAndActualize(
|
||||
fir2IrExtensions,
|
||||
|
||||
-5
@@ -10,17 +10,12 @@ import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.isJs
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
||||
import org.jetbrains.kotlin.test.model.Frontend2BackendConverter
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
fun TestModule.shouldUseIrFakeOverrideBuilder(): Boolean {
|
||||
return !targetPlatform.isJvm() || CodegenTestDirectives.ENABLE_IR_FAKE_OVERRIDE_GENERATION in directives
|
||||
}
|
||||
|
||||
class Fir2IrResultsConverter(
|
||||
testServices: TestServices
|
||||
) : Frontend2BackendConverter<FirOutputArtifact, IrBackendInput>(
|
||||
|
||||
+6
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.platform.konan.isNative
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.TestInfrastructureInternals
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
@@ -129,6 +130,11 @@ fun createCompilerConfiguration(module: TestModule, configurators: List<Abstract
|
||||
val configuration = CompilerConfiguration()
|
||||
configuration[CommonConfigurationKeys.MODULE_NAME] = module.name
|
||||
|
||||
if (module.targetPlatform.isJvm() && CodegenTestDirectives.ENABLE_IR_FAKE_OVERRIDE_GENERATION in module.directives) {
|
||||
// For non-JVM platforms, the IR-based fake override builder is enabled unconditionally; on JVM it must be enabled manually.
|
||||
configuration.put(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER, true)
|
||||
}
|
||||
|
||||
if (JsEnvironmentConfigurationDirectives.GENERATE_STRICT_IMPLICIT_EXPORT in module.directives) {
|
||||
configuration.put(JSConfigurationKeys.GENERATE_STRICT_IMPLICIT_EXPORT, true)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user