K2 Tests. Do not use the TopDownAnalyzerFacadeForJVM to create module descriptor

In fact, TopDownAnalyzerFacadeForJVM.createContainer initializes the
whole K1 frontend. While it is only used to create a module descriptor
for GenerationState.Builder, in real K2 compiler the module descriptor
would be created via irModuleFragment.

See org.jetbrains.kotlin.cli.jvm.compiler.pipeline.CompilerPipelineKt.generateCodeFromIr
This commit is contained in:
Simon Ogorodnik
2023-12-18 14:44:40 +01:00
committed by Space Team
parent 023cce1fab
commit f4c7f513ef
@@ -73,14 +73,7 @@ class Fir2IrJvmResultsConverter(
// Create and initialize the module and its dependencies
val project = compilerConfigurationProvider.getProject(module)
// TODO: handle fir from light tree
val ktFiles = inputArtifact.mainFirFiles.mapNotNull { it.value.psi as KtFile? }
val sourceFiles = inputArtifact.mainFirFiles.mapNotNull { it.value.sourceFile }
val container = TopDownAnalyzerFacadeForJVM.createContainer(
project, ktFiles, NoScopeRecordCliBindingTrace(), configuration,
compilerConfigurationProvider.getPackagePartProviderFactory(module),
::FileBasedDeclarationProviderFactory, CompilerEnvironment,
TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, ktFiles), emptyList()
)
val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
@@ -128,7 +121,7 @@ class Fir2IrJvmResultsConverter(
val codegenFactory = JvmIrCodegenFactory(configuration, phaseConfig)
val generationState = GenerationState.Builder(
project, ClassBuilderFactories.TEST,
container.get(), NoScopeRecordCliBindingTrace().bindingContext, configuration
fir2irResult.irModuleFragment.descriptor, NoScopeRecordCliBindingTrace().bindingContext, configuration
).isIrBackend(
true
).jvmBackendClassResolver(