diff --git a/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt b/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt index 316060f78b9..48c2b2148d2 100644 --- a/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt +++ b/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt @@ -164,7 +164,7 @@ abstract class AbstractSimpleFileBenchmark { val firProvider = session.firProvider as FirProviderImpl val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) - val totalTransformer = FirTotalResolveTransformer() + val totalTransformer = FirTotalResolveTransformer(session) val firFile = builder.buildFirFile(file).also(firProvider::recordFile) for (transformer in totalTransformer.transformers) { diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 4603c9af7ab..888d91c2e7a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -331,7 +331,7 @@ object KotlinToJVMBytecodeCompiler { } val firProvider = (session.firProvider as FirProviderImpl) val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) - val resolveTransformer = FirTotalResolveTransformer() + val resolveTransformer = FirTotalResolveTransformer(session) val firFiles = ktFiles.map { val firFile = builder.buildFirFile(it) firProvider.recordFile(firFile) diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt index 6a01f4e08e1..c400ec3c38a 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt @@ -68,7 +68,7 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { val firProvider = (session.firProvider as FirProviderImpl) val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) - val resolveTransformer = FirTotalResolveTransformer() + val resolveTransformer = FirTotalResolveTransformer(session) val firFiles = psiFiles.map { val firFile = builder.buildFirFile(it) firProvider.recordFile(firFile) diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt index fe8dcc6856d..a06ee7b111a 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt @@ -55,7 +55,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() { .uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project)) val librariesScope = ProjectScope.getLibrariesScope(project) val session = createSession(environment, scope, librariesScope, moduleData.qualifiedName) - val totalTransformer = FirTotalResolveTransformer() + val totalTransformer = FirTotalResolveTransformer(session) val firProvider = session.firProvider as FirProviderImpl val firFiles = if (useLightTree) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt index 83da4b555af..58b8ec29571 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt @@ -52,7 +52,7 @@ fun FirFile.runResolve(toPhase: FirResolvePhase, fromPhase: FirResolvePhase = Fi var currentPhase = fromPhase while (currentPhase < toPhase) { currentPhase = currentPhase.next - val phaseTransformer = currentPhase.createTransformerByPhase(scopeSession) + val phaseTransformer = currentPhase.createTransformerByPhase(session, scopeSession) transform(phaseTransformer, null) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveTransformer.kt index adcd98d7ad9..723b2f3708d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveTransformer.kt @@ -5,20 +5,19 @@ package org.jetbrains.kotlin.fir.resolve.transformers +import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.visitors.FirTransformer -// TODO: rework, see rr/FIR/semoro-dev FirStagesTransformerFactory -class FirTotalResolveTransformer { - +class FirTotalResolveTransformer(session: FirSession) { val scopeSession = ScopeSession() val transformers: List> = FirResolvePhase.values() .drop(1) // to remove RAW_FIR phase - .map { it.createTransformerByPhase(scopeSession) } + .map { it.createTransformerByPhase(session, scopeSession) } fun processFiles(files: List) { for (transformer in transformers) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt index aed0443f86e..7856dfbb7e4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.transformers +import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase.* import org.jetbrains.kotlin.fir.resolve.ScopeSession @@ -17,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer // TODO: add FirSession parameter @OptIn(AdapterForResolvePhase::class) -fun FirResolvePhase.createTransformerByPhase(scopeSession: ScopeSession): FirTransformer { +fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession: ScopeSession): FirTransformer { return when (this) { RAW_FIR -> throw AssertionError("Raw FIR building phase does not have a transformer") ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(scopeSession) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index ec96d1e78b5..516161615c6 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -128,7 +128,7 @@ object GenerationUtils { val firProvider = (session.firProvider as FirProviderImpl) val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) - val resolveTransformer = FirTotalResolveTransformer() + val resolveTransformer = FirTotalResolveTransformer(session) val firFiles = files.map { val firFile = builder.buildFirFile(it) firProvider.recordFile(firFile) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt index b4555b38d07..f004ff5aa52 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt @@ -73,10 +73,10 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() { } override fun runAnalysis(testDataFile: File, testFiles: List, firFilesPerSession: Map>) { - for ((_, firFiles) in firFilesPerSession) { + for ((session, firFiles) in firFilesPerSession) { doFirResolveTestBench( firFiles, - FirTotalResolveTransformer().transformers, + FirTotalResolveTransformer(session).transformers, gc = false ) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt index 28c69cb3540..11f71c78e01 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt @@ -31,8 +31,8 @@ abstract class AbstractFirOldFrontendDiagnosticsTest : AbstractFirDiagnosticsTes override fun runAnalysis(testDataFile: File, testFiles: List, firFilesPerSession: Map>) { val failure: FirRuntimeException? = try { - for ((_, firFiles) in firFilesPerSession) { - doFirResolveTestBench(firFiles, FirTotalResolveTransformer().transformers, gc = false) + for ((session, firFiles) in firFilesPerSession) { + doFirResolveTestBench(firFiles, FirTotalResolveTransformer(session).transformers, gc = false) } null } catch (e: FirRuntimeException) { diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizer.kt b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizer.kt index 062b5f60a6b..2f98e33754c 100644 --- a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizer.kt +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizer.kt @@ -37,7 +37,7 @@ abstract class AbstractFirVisualizer : AbstractVisualizer() { val firProvider = (session.firProvider as FirProviderImpl) val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) - val transformer = FirTotalResolveTransformer() + val transformer = FirTotalResolveTransformer(session) val firFiles = ktFiles.map { val firFile = builder.buildFirFile(it) firProvider.recordFile(firFile) diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt index d7a66e22f7b..b592e8afcac 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt @@ -115,7 +115,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { firFiles += firFile } firFilesPerSession[session] = firFiles - totalTransformerPerSession[session] = FirTotalResolveTransformer() + totalTransformerPerSession[session] = FirTotalResolveTransformer(session) } println("Raw fir up, files: ${firFilesPerSession.values.flatten().size}")