[Test] Drop convertToIr method from AbstractFirAnalyzerFacade

We are going to use `convertToIr` from `ModuleCompilerAnalyzedOutput`
without an intermediate wrapper.
This commit is contained in:
Ivan Kylchik
2023-07-16 17:10:58 +02:00
committed by Space Team
parent 3c9eb87c8d
commit 6e45c9d4c7
7 changed files with 72 additions and 120 deletions
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
@@ -33,10 +34,7 @@ import org.jetbrains.kotlin.fir.FirAnalyzerFacade
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
import org.jetbrains.kotlin.fir.backend.jvm.*
import org.jetbrains.kotlin.fir.pipeline.signatureComposerForJvmFir2Ir
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
@@ -118,31 +116,36 @@ object GenerationUtils {
getPackagePartProvider = packagePartProvider
)
val linkViaSignatures = configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
// TODO: add running checkers and check that it's safe to compile
val firAnalyzerFacade = FirAnalyzerFacade(
session,
Fir2IrConfiguration(
languageVersionSettings = configuration.languageVersionSettings,
linkViaSignatures = configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
evaluatedConstTracker = configuration
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
),
files,
emptyList(),
FirParser.Psi,
)
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
val commonMemberStorage = Fir2IrCommonMemberStorage(
signatureComposerForJvmFir2Ir(firAnalyzerFacade.fir2IrConfiguration.linkViaSignatures),
FirJvmKotlinMangler(),
val fir2IrConfiguration = Fir2IrConfiguration(
languageVersionSettings = configuration.languageVersionSettings,
linkViaSignatures = linkViaSignatures,
evaluatedConstTracker = configuration
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
)
val (moduleFragment, components, pluginContext) = firAnalyzerFacade.convertToIr(
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(linkViaSignatures), FirJvmKotlinMangler())
firAnalyzerFacade.runResolution()
val (moduleFragment, components, pluginContext) = firAnalyzerFacade.result.outputs.single().convertToIr(
fir2IrExtensions,
fir2IrConfiguration,
commonMemberStorage,
irBuiltIns = null
irBuiltIns = null,
JvmIrMangler,
FirJvmVisibilityConverter,
DefaultBuiltIns.Instance
)
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
@@ -6,35 +6,26 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.KtSourceFile
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.pipeline.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.FirParser
abstract class AbstractFirAnalyzerFacade {
abstract val scopeSession: ScopeSession
abstract val result: FirResult
abstract fun runCheckers(): Map<FirFile, List<KtDiagnostic>>
abstract fun runResolution(): List<FirFile>
abstract fun convertToIr(
fir2IrExtensions: Fir2IrExtensions,
commonMemberStorage: Fir2IrCommonMemberStorage,
irBuiltIns: IrBuiltInsOverFir?
): Fir2IrResult
}
class FirAnalyzerFacade(
val session: FirSession,
val fir2IrConfiguration: Fir2IrConfiguration,
val ktFiles: Collection<KtFile> = emptyList(), // may be empty if light tree mode enabled
val lightTreeFiles: Collection<KtSourceFile> = emptyList(), // may be empty if light tree mode disabled
val parser: FirParser,
@@ -45,6 +36,9 @@ class FirAnalyzerFacade(
override val scopeSession: ScopeSession
get() = _scopeSession!!
override val result: FirResult
get() = FirResult(listOf(ModuleCompilerAnalyzedOutput(session, scopeSession, firFiles!!)))
private var collectedDiagnostics: Map<FirFile, List<KtDiagnostic>>? = null
private fun buildRawFir() {
@@ -68,22 +62,4 @@ class FirAnalyzerFacade(
collectedDiagnostics = session.runCheckers(scopeSession, firFiles!!, DiagnosticReporterFactory.createPendingReporter())
return collectedDiagnostics!!
}
override fun convertToIr(
fir2IrExtensions: Fir2IrExtensions,
commonMemberStorage: Fir2IrCommonMemberStorage,
irBuiltIns: IrBuiltInsOverFir?
): Fir2IrResult {
if (_scopeSession == null) runResolution()
return ModuleCompilerAnalyzedOutput(this.session, this.scopeSession, firFiles!!.toList()).convertToIr(
fir2IrExtensions,
fir2IrConfiguration,
commonMemberStorage,
irBuiltIns,
JvmIrMangler,
FirJvmVisibilityConverter,
DefaultBuiltIns.Instance
)
}
}