[FIR] Use ModuleCompilerAnalyzedOutput instead of FirResult

Remove FirResult since it has the same semantics value
This commit is contained in:
Ivan Kochurkin
2022-10-22 17:22:46 +02:00
committed by Space Team
parent 57dda3bf92
commit bcfdbaa6a6
6 changed files with 25 additions and 45 deletions
@@ -41,11 +41,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.fir.pipeline.buildFirFromKtFiles
import org.jetbrains.kotlin.fir.pipeline.convertToIr
import org.jetbrains.kotlin.fir.pipeline.runCheckers
import org.jetbrains.kotlin.fir.pipeline.runResolution
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.pipeline.*
import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper
import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
@@ -114,7 +110,7 @@ object FirKotlinToJvmBytecodeCompiler {
return false
}
val outputs = ArrayList<Pair<FirResult, GenerationState>>(chunk.size)
val outputs = ArrayList<Pair<ModuleCompilerAnalyzedOutput, GenerationState>>(chunk.size)
val targetIds = projectConfiguration.get(JVMConfigurationKeys.MODULES)?.map(::TargetId)
val incrementalComponents = projectConfiguration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS)
val isMultiModuleChunk = chunk.size > 1
@@ -151,7 +147,7 @@ object FirKotlinToJvmBytecodeCompiler {
project,
projectConfiguration,
chunk,
outputs.map(Pair<FirResult, GenerationState>::second),
outputs.map(Pair<ModuleCompilerAnalyzedOutput, GenerationState>::second),
mainClassFqName
)
}
@@ -164,7 +160,7 @@ object FirKotlinToJvmBytecodeCompiler {
?.mapTo(destination) { it::class.qualifiedName }
}
private fun CompilationContext.compileModule(): Pair<FirResult, GenerationState>? {
private fun CompilationContext.compileModule(): Pair<ModuleCompilerAnalyzedOutput, GenerationState>? {
performanceManager?.notifyAnalysisStarted()
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
@@ -186,9 +182,7 @@ object FirKotlinToJvmBytecodeCompiler {
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
val linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
val fir2IrResult = firResult.session.convertToIr(
firResult.scopeSession, firResult.fir, fir2IrExtensions, irGenerationExtensions, linkViaSignatures
)
val fir2IrResult = firResult.convertToIr(fir2IrExtensions, irGenerationExtensions, linkViaSignatures)
performanceManager?.notifyIRTranslationFinished()
@@ -209,13 +203,7 @@ object FirKotlinToJvmBytecodeCompiler {
return firResult to generationState
}
private class FirResult(
val session: FirSession,
val scopeSession: ScopeSession,
val fir: List<FirFile>
)
private fun CompilationContext.runFrontend(ktFiles: List<KtFile>, diagnosticsReporter: BaseDiagnosticsCollector): FirResult? {
private fun CompilationContext.runFrontend(ktFiles: List<KtFile>, diagnosticsReporter: BaseDiagnosticsCollector): ModuleCompilerAnalyzedOutput? {
@Suppress("NAME_SHADOWING")
var ktFiles = ktFiles
val syntaxErrors = ktFiles.fold(false) { errorsFound, ktFile ->
@@ -313,7 +301,7 @@ object FirKotlinToJvmBytecodeCompiler {
val (scopeSession, fir) = session.runResolution(rawFir)
session.runCheckers(scopeSession, fir, diagnosticsReporter)
return if (syntaxErrors || diagnosticsReporter.hasErrors) null else FirResult(session, scopeSession, fir)
return if (syntaxErrors || diagnosticsReporter.hasErrors) null else ModuleCompilerAnalyzedOutput(session, scopeSession, fir)
}
private fun CompilationContext.createComponentsForIncrementalCompilation(
@@ -53,10 +53,7 @@ import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.pipeline.buildFirViaLightTree
import org.jetbrains.kotlin.fir.pipeline.convertToIr
import org.jetbrains.kotlin.fir.pipeline.runCheckers
import org.jetbrains.kotlin.fir.pipeline.runResolution
import org.jetbrains.kotlin.fir.pipeline.*
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper
import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext
@@ -240,9 +237,7 @@ fun convertAnalyzedFirToIr(
} ?: emptyList()
val linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
val (irModuleFragment, components, pluginContext) =
analysisResults.session.convertToIr(
analysisResults.scopeSession, analysisResults.fir, extensions, irGenerationExtensions, linkViaSignatures
)
analysisResults.convertToIr(extensions, irGenerationExtensions, linkViaSignatures)
return ModuleCompilerIrBackendInput(
input.targetId,
@@ -43,14 +43,6 @@ data class ModuleCompilerOutput(
val generationState: GenerationState
)
// ---
data class ModuleCompilerAnalyzedOutput(
val session: FirSession,
val scopeSession: ScopeSession,
val fir: List<FirFile>
)
data class ModuleCompilerIrBackendInput(
val targetId: TargetId,
val configuration: CompilerConfiguration,
@@ -25,14 +25,18 @@ import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
fun FirSession.convertToIr(
scopeSession: ScopeSession,
firFiles: List<FirFile>,
data class ModuleCompilerAnalyzedOutput(
val session: FirSession,
val scopeSession: ScopeSession,
val fir: List<FirFile>
)
fun ModuleCompilerAnalyzedOutput.convertToIr(
fir2IrExtensions: Fir2IrExtensions,
irGeneratorExtensions: Collection<IrGenerationExtension>,
linkViaSignatures: Boolean
): Fir2IrResult {
val commonFirFiles = moduleData.dependsOnDependencies
val commonFirFiles = session.moduleData.dependsOnDependencies
.map { it.session }
.filter { it.kind == FirSession.Kind.Source }
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
@@ -40,9 +44,9 @@ fun FirSession.convertToIr(
if (linkViaSignatures) {
val signaturer = JvmIdSignatureDescriptor(mangler = JvmDescriptorMangler(mainDetector = null))
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
this, scopeSession, firFiles + commonFirFiles,
languageVersionSettings, signaturer, fir2IrExtensions,
FirJvmKotlinMangler(this),
session, scopeSession, fir + commonFirFiles,
session.languageVersionSettings, signaturer, fir2IrExtensions,
FirJvmKotlinMangler(session),
JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGeneratorExtensions,
@@ -51,9 +55,9 @@ fun FirSession.convertToIr(
)
} else {
return Fir2IrConverter.createModuleFragmentWithoutSignatures(
this, scopeSession, firFiles + commonFirFiles,
languageVersionSettings, fir2IrExtensions,
FirJvmKotlinMangler(this),
session, scopeSession, fir + commonFirFiles,
session.languageVersionSettings, fir2IrExtensions,
FirJvmKotlinMangler(session),
JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGeneratorExtensions,
@@ -48,6 +48,7 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
import org.jetbrains.kotlin.fir.languageVersionSettings
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.pop
import org.jetbrains.kotlin.backend.common.push
import org.jetbrains.kotlin.backend.jvm.metadata.MetadataSerializer
import org.jetbrains.kotlin.build.report.ICReporter
import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.ModuleCompilerAnalyzedOutput
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.fir.FirElement
@@ -17,6 +16,7 @@ import org.jetbrains.kotlin.fir.backend.FirMetadataSource
import org.jetbrains.kotlin.fir.backend.jvm.makeLocalFirMetadataSerializerForMetadataSource
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptor
import org.jetbrains.kotlin.fir.visitors.FirVisitor
import org.jetbrains.kotlin.metadata.ProtoBuf