diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index c81bd1be6b0..e46bf29282c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -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>(chunk.size) + val outputs = ArrayList>(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::second), + outputs.map(Pair::second), mainClassFqName ) } @@ -164,7 +160,7 @@ object FirKotlinToJvmBytecodeCompiler { ?.mapTo(destination) { it::class.qualifiedName } } - private fun CompilationContext.compileModule(): Pair? { + private fun CompilationContext.compileModule(): Pair? { 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 - ) - - private fun CompilationContext.runFrontend(ktFiles: List, diagnosticsReporter: BaseDiagnosticsCollector): FirResult? { + private fun CompilationContext.runFrontend(ktFiles: List, 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( diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt index 0a5d6784d3e..bf0fd7054d2 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt @@ -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, diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipelineData.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipelineData.kt index e118299c6ed..028a0a6f082 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipelineData.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipelineData.kt @@ -43,14 +43,6 @@ data class ModuleCompilerOutput( val generationState: GenerationState ) -// --- - -data class ModuleCompilerAnalyzedOutput( - val session: FirSession, - val scopeSession: ScopeSession, - val fir: List -) - data class ModuleCompilerIrBackendInput( val targetId: TargetId, val configuration: CompilerConfiguration, diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt index 1ff3b1385c9..ec0ec858952 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt @@ -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, +data class ModuleCompilerAnalyzedOutput( + val session: FirSession, + val scopeSession: ScopeSession, + val fir: List +) + +fun ModuleCompilerAnalyzedOutput.convertToIr( fir2IrExtensions: Fir2IrExtensions, irGeneratorExtensions: Collection, 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, diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt index 711c998476e..72d3e835ceb 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt @@ -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 diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt index 068bc4b7fe2..6863cfa8494 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt @@ -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