Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ import org.jetbrains.kotlin.fir.pipeline.*
import org.jetbrains.kotlin.fir.references.FirReference
import org.jetbrains.kotlin.fir.references.FirThisReference
import org.jetbrains.kotlin.fir.references.toResolvedSymbol
import org.jetbrains.kotlin.fir.resolve.referencedMemberSymbol
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhaseRecursively
Expand Down Expand Up @@ -1087,11 +1086,11 @@ internal class KaFirCompilerFacility(
): Fir2IrActualizedResult {
val fir2IrConfiguration =
Fir2IrConfiguration.forAnalysisApi(effectiveConfiguration, session.languageVersionSettings, diagnosticReporter)
val firResult = FirResult(listOf(ModuleCompilerAnalyzedOutput(session, session.getScopeSession(), firFiles)))
val singleOutput = firResult.outputs.size == 1
val frontendOutput = AllModulesFrontendOutput(listOf(SingleModuleFrontendOutput(session, session.getScopeSession(), firFiles)))
val singleOutput = frontendOutput.outputs.size == 1
check(singleOutput) { "Single output invariant is used in the lambda below" }

return firResult.convertToIrAndActualize(
return frontendOutput.convertToIrAndActualize(
fir2IrExtensions = fir2IrExtensions,
fir2IrConfiguration = fir2IrConfiguration,
irGeneratorExtensions = irGeneratorExtensions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ internal class LLFirPhaseVerifier(testServices: TestServices) : FirAnalysisHandl

override fun processModule(module: TestModule, info: FirOutputArtifact) {
val visitor = Visitor()
for (firFile in info.mainFirFiles.values) {
for (firFile in info.mainFirFilesByTestFile.values) {
firFile.accept(visitor)
}

Expand Down Expand Up @@ -69,4 +69,4 @@ internal class LLFirPhaseVerifier(testServices: TestServices) : FirAnalysisHandl
element.acceptChildren(this)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDiagnosticsFor
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.fir.pipeline.SingleModuleFrontendOutput
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.util.listMultimapOf
Expand All @@ -35,10 +35,10 @@ open class LowLevelFirAnalyzerFacade(
override val scopeSession: ScopeSession
get() = ScopeSession()

override val result: FirResult
override val frontendOutput: AllModulesFrontendOutput
get() {
val output = ModuleCompilerAnalyzedOutput(resolutionFacade.useSiteFirSession, scopeSession, allFirFiles.values.toList())
return FirResult(listOf(output))
val output = SingleModuleFrontendOutput(resolutionFacade.useSiteFirSession, scopeSession, allFirFiles.values.toList())
return AllModulesFrontendOutput(listOf(output))
}

private var resolved: Boolean = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ object WebFir2IrPipelinePhase : PipelinePhase<WebFrontendPipelineArtifact, JsFir

private fun transformFirToIr(
moduleStructure: ModulesStructure,
firOutputs: List<ModuleCompilerAnalyzedOutput>,
firOutputs: List<SingleModuleFrontendOutput>,
diagnosticsReporter: BaseDiagnosticsCollector,
): Fir2IrActualizedResult {
val fir2IrExtensions = Fir2IrExtensions.Default
Expand Down Expand Up @@ -88,7 +88,7 @@ object WebFir2IrPipelinePhase : PipelinePhase<WebFrontendPipelineArtifact, JsFir
moduleDescriptor
}

val firResult = FirResult(firOutputs)
val firResult = AllModulesFrontendOutput(firOutputs)
return firResult.convertToIrAndActualize(
fir2IrExtensions,
Fir2IrConfiguration.forKlibCompilation(moduleStructure.compilerConfiguration, diagnosticsReporter),
Expand All @@ -109,7 +109,7 @@ object WebFir2IrPipelinePhase : PipelinePhase<WebFrontendPipelineArtifact, JsFir
private fun runJsKlibCallCheckers(
diagnosticReporter: BaseDiagnosticsCollector,
configuration: CompilerConfiguration,
firOutputs: List<ModuleCompilerAnalyzedOutput>,
firOutputs: List<SingleModuleFrontendOutput>,
fir2IrActualizedResult: Fir2IrActualizedResult,
) {
val irDiagnosticReporter =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ object WebFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, W
incrementalDataProvider: IncrementalDataProvider?,
lookupTracker: LookupTracker?,
useWasmPlatform: Boolean,
): FirResult {
): AllModulesFrontendOutput {
for (ktFile in ktFiles) {
AnalyzerWithCompilerReport.reportSyntaxErrors(ktFile, diagnosticsReporter)
}
Expand All @@ -162,7 +162,7 @@ object WebFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, W
useWasmPlatform = useWasmPlatform,
)
output.runPlatformCheckers(diagnosticsReporter)
return FirResult(output)
return AllModulesFrontendOutput(output)
}

private fun compileModulesToAnalyzedFirWithLightTree(
Expand All @@ -176,7 +176,7 @@ object WebFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, W
incrementalDataProvider: IncrementalDataProvider?,
lookupTracker: LookupTracker?,
useWasmPlatform: Boolean,
): FirResult {
): AllModulesFrontendOutput {
val output = compileModuleToAnalyzedFir(
moduleStructure,
ktSourceFiles,
Expand All @@ -192,7 +192,7 @@ object WebFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, W
useWasmPlatform = useWasmPlatform,
)
output.runPlatformCheckers(diagnosticsReporter)
return FirResult(output)
return AllModulesFrontendOutput(output)
}

private inline fun <F> compileModuleToAnalyzedFir(
Expand All @@ -204,9 +204,9 @@ object WebFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, W
lookupTracker: LookupTracker?,
noinline isCommonSource: (F) -> Boolean,
noinline fileBelongsToModule: (F, String) -> Boolean,
buildResolveAndCheckFir: (FirSession, List<F>) -> ModuleCompilerAnalyzedOutput,
buildResolveAndCheckFir: (FirSession, List<F>) -> SingleModuleFrontendOutput,
useWasmPlatform: Boolean,
): List<ModuleCompilerAnalyzedOutput> {
): List<SingleModuleFrontendOutput> {
// FIR
val extensionRegistrars = FirExtensionRegistrar.getInstances(moduleStructure.project)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.config.phaser.PhaserState
import org.jetbrains.kotlin.diagnostics.impl.deduplicating
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
import org.jetbrains.kotlin.fir.pipeline.Fir2KlibMetadataSerializer
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
import org.jetbrains.kotlin.ir.backend.js.JsPreSerializationLoweringContext
import org.jetbrains.kotlin.ir.backend.js.ModulesStructure
Expand Down Expand Up @@ -62,7 +62,7 @@ object WebKlibInliningPipelinePhase : PipelinePhase<JsFir2IrPipelineArtifact, Js
private fun processIncrementalCompilationRoundIfNeeded(
configuration: CompilerConfiguration,
moduleStructure: ModulesStructure,
firResult: FirResult,
frontendOutput: AllModulesFrontendOutput,
fir2IrResult: Fir2IrActualizedResult,
) {
if (!configuration.incrementalCompilation) return
Expand All @@ -75,7 +75,7 @@ object WebKlibInliningPipelinePhase : PipelinePhase<JsFir2IrPipelineArtifact, Js
val shouldGoToNextIcRound = shouldGoToNextIcRound(moduleStructure.compilerConfiguration) {
Fir2KlibMetadataSerializer(
moduleStructure.compilerConfiguration,
firResult.outputs,
frontendOutput.outputs,
fir2IrResult,
exportKDoc = false,
produceHeaderKlib = false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import org.jetbrains.kotlin.cli.pipeline.PipelineArtifact
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.ir.backend.js.ModulesStructure
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.CompilationOutputs
import java.io.File

data class WebFrontendPipelineArtifact(
override val result: FirResult,
override val frontendOutput: AllModulesFrontendOutput,
override val configuration: CompilerConfiguration,
override val diagnosticCollector: BaseDiagnosticsCollector,
val moduleStructure: ModulesStructure,
Expand All @@ -31,7 +31,7 @@ data class WebFrontendPipelineArtifact(

data class JsFir2IrPipelineArtifact(
override val result: Fir2IrActualizedResult,
val firResult: FirResult,
val frontendOutput: AllModulesFrontendOutput,
val configuration: CompilerConfiguration,
override val diagnosticCollector: BaseDiagnosticsCollector,
val moduleStructure: ModulesStructure,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
package org.jetbrains.kotlin.native

import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary

data class Fir2IrOutput(
val firResult: FirResult,
val frontendOutput: AllModulesFrontendOutput,
val symbols: KonanSymbols,
val fir2irActualizedResult: Fir2IrActualizedResult,
val usedLibraries: Set<KotlinResolvedLibrary>
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ private inline fun <F> PhaseContext.firFrontend(
fileHasSyntaxErrors: (F) -> Boolean,
noinline isCommonSource: (F) -> Boolean,
noinline fileBelongsToModule: (F, String) -> Boolean,
buildResolveAndCheckFir: (FirSession, List<F>, BaseDiagnosticsCollector) -> ModuleCompilerAnalyzedOutput,
buildResolveAndCheckFir: (FirSession, List<F>, BaseDiagnosticsCollector) -> SingleModuleFrontendOutput,
): FirOutput {
val configuration = input.configuration
val messageCollector = configuration.getNotNull(CommonConfigurationKeys.MESSAGE_COLLECTOR_KEY)
Expand Down Expand Up @@ -86,7 +86,7 @@ private inline fun <F> PhaseContext.firFrontend(
return if (syntaxErrors || diagnosticsReporter.hasErrors) {
throw KonanCompilationException("Compilation failed: there were frontend errors")
} else {
FirOutput.Full(FirResult(outputs))
FirOutput.Full(AllModulesFrontendOutput(outputs))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.diagnostics.impl.deduplicating
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.pipeline.Fir2KlibMetadataSerializer
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
import org.jetbrains.kotlin.konan.library.KonanLibrary
import org.jetbrains.kotlin.library.metadata.resolver.TopologicalLibraryOrder
Expand All @@ -31,11 +31,11 @@ fun PhaseContext.firSerializer(input: FirOutput): SerializerOutput? = when (inpu
}

fun PhaseContext.fir2IrSerializer(input: FirSerializerInput): SerializerOutput {
return firSerializerBase(input.firToIrOutput.firResult, input.firToIrOutput, produceHeaderKlib = input.produceHeaderKlib)
return firSerializerBase(input.firToIrOutput.frontendOutput, input.firToIrOutput, produceHeaderKlib = input.produceHeaderKlib)
}

private fun PhaseContext.firSerializerBase(
firResult: FirResult,
firResult: AllModulesFrontendOutput,
fir2IrOutput: Fir2IrOutput?,
produceHeaderKlib: Boolean = false,
): SerializerOutput {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

package org.jetbrains.kotlin.native

import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput

sealed class FirOutput {
object ShouldNotGenerateCode : FirOutput()

data class Full(val firResult: FirResult) : FirOutput()
}
data class Full(val firResult: AllModulesFrontendOutput) : FirOutput()
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
import org.jetbrains.kotlin.fir.backend.jvm.*
import org.jetbrains.kotlin.fir.backend.utils.extractFirDeclarations
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext
Expand All @@ -66,13 +66,13 @@ import java.io.File
fun convertAnalyzedFirToIr(
configuration: CompilerConfiguration,
targetId: TargetId,
analysisResults: FirResult,
frontendOutput: AllModulesFrontendOutput,
environment: ModuleCompilerEnvironment
): ModuleCompilerIrBackendInput {
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl())

val (moduleFragment, components, pluginContext, irActualizedResult, _, symbolTable) =
analysisResults.convertToIrAndActualizeForJvm(
frontendOutput.convertToIrAndActualizeForJvm(
extensions, configuration, environment.diagnosticsReporter,
IrGenerationExtension.getInstances(environment.projectEnvironment.project),
)
Expand All @@ -89,7 +89,7 @@ fun convertAnalyzedFirToIr(
)
}

fun FirResult.convertToIrAndActualizeForJvm(
fun AllModulesFrontendOutput.convertToIrAndActualizeForJvm(
fir2IrExtensions: Fir2IrExtensions,
configuration: CompilerConfiguration,
diagnosticsReporter: BaseDiagnosticsCollector,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.perfManager
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.fir.pipeline.buildResolveAndCheckFirViaLightTree
import org.jetbrains.kotlin.fir.pipeline.runPlatformCheckers
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
Expand All @@ -36,7 +36,7 @@ fun compileModuleToAnalyzedFirViaLightTreeIncrementally(
input: ModuleCompilerInput,
diagnosticsReporter: BaseDiagnosticsCollector,
incrementalExcludesScope: AbstractProjectFileSearchScope?,
): FirResult {
): AllModulesFrontendOutput {
return MinimizedFrontendContext(
projectEnvironment,
messageCollector,
Expand All @@ -58,7 +58,7 @@ private fun FrontendContext.compileModuleToAnalyzedFirViaLightTreeIncrementally(
previousStepsSymbolProviders: List<FirSymbolProvider>,
incrementalExcludesScope: AbstractProjectFileSearchScope?,
friendPaths: List<String>,
): FirResult {
): AllModulesFrontendOutput {
val performanceManager = configuration.perfManager
return performanceManager.tryMeasurePhaseTime(PhaseType.Analysis) {
var librariesScope = projectEnvironment.getSearchScopeForProjectLibraries()
Expand Down Expand Up @@ -99,6 +99,6 @@ private fun FrontendContext.compileModuleToAnalyzedFirViaLightTreeIncrementally(
buildResolveAndCheckFirViaLightTree(session, sources, diagnosticsReporter, countFilesAndLines)
}
outputs.runPlatformCheckers(diagnosticsReporter)
FirResult(outputs)
AllModulesFrontendOutput(outputs)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.util.PerformanceManager

abstract class PipelineArtifact
Expand All @@ -40,7 +40,7 @@ data class ConfigurationPipelineArtifact(
) : PipelineArtifact()

abstract class FrontendPipelineArtifact : PipelineArtifact() {
abstract val result: FirResult
abstract val frontendOutput: AllModulesFrontendOutput
abstract val diagnosticCollector: BaseDiagnosticsCollector
abstract val configuration: CompilerConfiguration
abstract fun withNewDiagnosticCollectorImpl(newDiagnosticsCollector: BaseDiagnosticsCollector): FrontendPipelineArtifact
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ object JvmFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, J

if (!kotlinPackageUsageIsFine) return null

val firResult = FirResult(outputs)
return JvmFrontendPipelineArtifact(firResult, configuration, environment, diagnosticsCollector, allSources)
val frontendOutput = AllModulesFrontendOutput(outputs)
return JvmFrontendPipelineArtifact(frontendOutput, configuration, environment, diagnosticsCollector, allSources)
}

private data class EnvironmentAndSources(val environment: VfsBasedProjectEnvironment, val sources: () -> GroupedKtSources)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.AllModulesFrontendOutput
import org.jetbrains.kotlin.name.FqName

class JvmScriptPipelineArtifact(override val exitCode: ExitCode) : PipelineArtifactWithExitCode()

data class JvmFrontendPipelineArtifact(
override val result: FirResult,
override val frontendOutput: AllModulesFrontendOutput,
override val configuration: CompilerConfiguration,
val environment: VfsBasedProjectEnvironment,
override val diagnosticCollector: BaseDiagnosticsCollector,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ object MetadataFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifa
val renderDiagnosticNames = configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME)
FirDiagnosticsCompilerResultsReporter.reportToMessageCollector(diagnosticsReporter, messageCollector, renderDiagnosticNames)
return MetadataFrontendPipelineArtifact(
FirResult(outputs),
AllModulesFrontendOutput(outputs),
configuration,
diagnosticsReporter,
sourceFiles
Expand Down
Loading