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 4661f58a667..b2891b1c922 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 @@ -320,7 +320,7 @@ object KotlinToJVMBytecodeCompiler { val scope = GlobalSearchScope.filesScope(project, ktFiles.map { it.virtualFile }) .uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project)) - val provider = FirProjectSessionProvider(project) + val provider = FirProjectSessionProvider() val librariesModuleInfo = FirJvmModuleInfo.createForLibraries() val librariesScope = ProjectScope.getLibrariesScope(project) @@ -330,7 +330,7 @@ object KotlinToJVMBytecodeCompiler { ) val moduleInfo = FirJvmModuleInfo(module.getModuleName(), listOf(librariesModuleInfo)) - val session = FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, scope) { + val session = FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, scope, project) { if (extendedAnalysisMode) { registerExtendedCommonCheckers() } diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt index c839403fd6a..14e399385b7 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt @@ -62,6 +62,7 @@ object FirSessionFactory { moduleInfo: ModuleInfo, sessionProvider: FirProjectSessionProvider, scope: GlobalSearchScope, + project: Project, dependenciesProvider: FirSymbolProvider? = null, languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, init: FirSessionConfigurator.() -> Unit = {} @@ -82,7 +83,7 @@ object FirSessionFactory { this, listOf( firProvider.symbolProvider, - JavaSymbolProvider(this, sessionProvider.project, scope), + JavaSymbolProvider(this, project, scope), dependenciesProvider ?: FirDependenciesSymbolProviderImpl(this) ) ) as FirSymbolProvider @@ -93,8 +94,7 @@ object FirSessionFactory { init() }.configure() - PsiElementFinder.EP.getPoint(sessionProvider.project) - .registerExtension(FirJavaElementFinder(this, sessionProvider.project), sessionProvider.project) + PsiElementFinder.EP.getPoint(project).registerExtension(FirJavaElementFinder(this, project), project) } } @@ -115,7 +115,7 @@ object FirSessionFactory { return FirLibrarySession(moduleInfo, sessionProvider).apply { registerCommonComponents(languageVersionSettings) - val javaSymbolProvider = JavaSymbolProvider(this, sessionProvider.project, scope) + val javaSymbolProvider = JavaSymbolProvider(this, project, scope) val kotlinScopeProvider = KotlinScopeProvider(::wrapScopeWithJvmMapped) @@ -125,7 +125,7 @@ object FirSessionFactory { this, listOf( KotlinDeserializedJvmSymbolsProvider( - this, sessionProvider.project, + this, project, packagePartProvider, javaSymbolProvider, kotlinClassFinder, diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt index 86455338e21..c1794f1d393 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt @@ -29,7 +29,7 @@ class FirLibrarySession @PrivateSessionConstructor constructor( } } -open class FirProjectSessionProvider(override val project: Project) : FirSessionProvider { +open class FirProjectSessionProvider : FirSessionProvider { override fun getSession(moduleInfo: ModuleInfo): FirSession? { return sessionCache[moduleInfo] } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSession.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSession.kt index aefdd736477..391182ef4f8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSession.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSession.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.fir -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.fir.types.impl.* import org.jetbrains.kotlin.fir.utils.ArrayMapAccessor @@ -13,7 +12,6 @@ import org.jetbrains.kotlin.fir.utils.ComponentArrayOwner import org.jetbrains.kotlin.fir.utils.NullableArrayMapAccessor import org.jetbrains.kotlin.fir.utils.TypeRegistry import org.jetbrains.kotlin.utils.JavaTypeEnhancementState -import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KClass interface FirSessionComponent @@ -44,8 +42,6 @@ abstract class FirSession @PrivateSessionConstructor constructor(val sessionProv } interface FirSessionProvider { - val project: Project - fun getSession(moduleInfo: ModuleInfo): FirSession? } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt index 3abe496c47d..df4ee22d134 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt @@ -69,7 +69,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { val modules = createModules(groupedByModule) - val sessionProvider = FirProjectSessionProvider(project) + val sessionProvider = FirProjectSessionProvider() //For BuiltIns, registered in sessionProvider automatically val allProjectScope = GlobalSearchScope.allScope(project) @@ -84,7 +84,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { val scope = TopDownAnalyzerFacadeForJVM.newModuleSearchScope( project, moduleFiles.mapNotNull { it.ktFile }) - FirSessionFactory.createJavaModuleBasedSession(info, sessionProvider, scope) { + FirSessionFactory.createJavaModuleBasedSession(info, sessionProvider, scope, project) { configureSession() getFirExtensions()?.let { registerExtensions(it) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt index 8a120515180..ad0a96f00d1 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt @@ -28,8 +28,8 @@ fun createSession( packagePartProvider: (GlobalSearchScope) -> PackagePartProvider ): FirSession { val moduleInfo = FirTestModuleInfo(name = Name.identifier(moduleName)) - val provider = FirProjectSessionProvider(project) - return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, sourceScope).also { + val provider = FirProjectSessionProvider() + return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, sourceScope, project).also { createSessionForDependencies(project, provider, moduleInfo, librariesScope, packagePartProvider) } } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionProvider.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionProvider.kt index aaed1a4d43b..34f3787df0f 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionProvider.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionProvider.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache @Immutable class FirIdeSessionProvider internal constructor( - override val project: Project, + val project: Project, internal val rootModuleSession: FirIdeSourcesSession, val sessions: Map ) : FirSessionProvider { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt index a9a6ed14cad..696a1cf2c59 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt @@ -57,7 +57,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession { val moduleInfo = module.productionSourceInfo()!! - return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()) + return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope(), project) } private fun createLibrarySession(moduleInfo: IdeaModuleInfo, provider: FirProjectSessionProvider): FirLibrarySession { @@ -69,7 +69,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { val firFilesPerSession = mutableMapOf>() val processorsPerSession = mutableMapOf>() val sessions = mutableListOf() - val provider = FirProjectSessionProvider(project) + val provider = FirProjectSessionProvider() for (module in project.allModules().drop(1)) { val session = createSession(module, provider) sessions += session