diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirBuiltinsSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirBuiltinsSessionFactory.kt index 8c3c2126726..21e28695617 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirBuiltinsSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirBuiltinsSessionFactory.kt @@ -49,7 +49,7 @@ class LLFirBuiltinsSessionFactory( private fun createBuiltinsAndCloneableSession(platform: TargetPlatform): LLFirBuiltinsAndCloneableSession { val builtinsModule = KtBuiltinsModule(platform, platform.getAnalyzerServices(), project) - return LLFirBuiltinsAndCloneableSession(builtinsModule, project, builtInTypes).apply session@{ + return LLFirBuiltinsAndCloneableSession(builtinsModule, builtInTypes).apply session@{ val moduleData = LLFirModuleData(builtinsModule).apply { bindSession(this@session) } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirLibrarySessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirLibrarySessionFactory.kt index cef581adcc7..eed6519ef16 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirLibrarySessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/project/structure/LLFirLibrarySessionFactory.kt @@ -44,7 +44,7 @@ class LLFirLibrarySessionFactory( val platform = ktLibraryModule.platform val builtinsSession = LLFirBuiltinsSessionFactory.getInstance(project).getBuiltinsSession(platform) sessionsCache.putIfAbsent(builtinsSession.ktModule, builtinsSession) - return LLFirLibrarySession(ktLibraryModule, project, builtinsSession.builtinTypes).apply session@{ + return LLFirLibrarySession(ktLibraryModule, builtinsSession.builtinTypes).apply session@{ val moduleData = LLFirModuleData(ktLibraryModule).apply { bindSession(this@session) } registerModuleData(moduleData) registerIdeComponents(project) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirBuiltinsAndCloneableSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirBuiltinsAndCloneableSession.kt index a237acde2ee..5978bf7cd33 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirBuiltinsAndCloneableSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirBuiltinsAndCloneableSession.kt @@ -5,13 +5,11 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.PrivateSessionConstructor class LLFirBuiltinsAndCloneableSession @PrivateSessionConstructor constructor( - override val ktModule: KtModule, - project: Project, + ktModule: KtModule, builtinTypes: BuiltinTypes, -) : LLFirLibraryLikeSession(project, builtinTypes) \ No newline at end of file +) : LLFirLibraryLikeSession(ktModule, builtinTypes) \ No newline at end of file diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibrariesSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibrariesSession.kt index 424e41d4ace..39493108b3b 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibrariesSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibrariesSession.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.PrivateSessionConstructor @@ -14,7 +13,6 @@ import org.jetbrains.kotlin.fir.PrivateSessionConstructor * [org.jetbrains.kotlin.fir.FirSession] responsible for all libraries analysing module transitively depends on */ internal class LLFirLibrarySession @PrivateSessionConstructor constructor( - override val ktModule: KtModule, - project: Project, + ktModule: KtModule, builtinTypes: BuiltinTypes, -) : LLFirLibraryLikeSession(project, builtinTypes) +) : LLFirLibraryLikeSession(ktModule, builtinTypes) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryLikeSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryLikeSession.kt index afc5a5137b2..1698c0b1ec2 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryLikeSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryLikeSession.kt @@ -5,15 +5,15 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.util.LLFirScopeSessionProvider +import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.resolve.ScopeSession abstract class LLFirLibraryLikeSession( - final override val project: Project, + ktModule: KtModule, builtinTypes: BuiltinTypes, -) : LLFirSession(builtinTypes, Kind.Library) { +) : LLFirSession(ktModule, builtinTypes, Kind.Library) { private val scopeSessionProvider = LLFirScopeSessionProvider.create(project, invalidationTrackers = emptyList()) override fun getScopeSession(): ScopeSession { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryOrLibrarySourceResolvableModuleSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryOrLibrarySourceResolvableModuleSession.kt index 8d257963a85..8c7892ad6ee 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryOrLibrarySourceResolvableModuleSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirLibraryOrLibrarySourceResolvableModuleSession.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule @@ -13,11 +12,10 @@ import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.fir.BuiltinTypes internal class LLFirLibraryOrLibrarySourceResolvableModuleSession( - override val ktModule: KtModule, - override val project: Project, + ktModule: KtModule, override val moduleComponents: LLFirModuleResolveComponents, builtinTypes: BuiltinTypes, -) : LLFirResolvableModuleSession(builtinTypes) { +) : LLFirResolvableModuleSession(ktModule, builtinTypes) { init { checkIsValidKtModule(ktModule) } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirNonUnderContentRootResolvableModuleSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirNonUnderContentRootResolvableModuleSession.kt index 750566c6cd1..c52b066b532 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirNonUnderContentRootResolvableModuleSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirNonUnderContentRootResolvableModuleSession.kt @@ -5,15 +5,13 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents import org.jetbrains.kotlin.analysis.project.structure.KtNotUnderContentRootModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.PrivateSessionConstructor internal class LLFirNonUnderContentRootResolvableModuleSession @PrivateSessionConstructor constructor( - override val ktModule: KtNotUnderContentRootModule, - override val project: Project, + ktModule: KtNotUnderContentRootModule, override val moduleComponents: LLFirModuleResolveComponents, builtinTypes: BuiltinTypes, -) : LLFirResolvableModuleSession(builtinTypes) +) : LLFirResolvableModuleSession(ktModule, builtinTypes) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirResolvableModuleSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirResolvableModuleSession.kt index 4316913bc2d..de48d398137 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirResolvableModuleSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirResolvableModuleSession.kt @@ -6,14 +6,16 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents +import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.FirElementWithResolvePhase import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol abstract class LLFirResolvableModuleSession( - builtinTypes: BuiltinTypes, -) : LLFirModuleSession(builtinTypes, Kind.Source) { + ktModule: KtModule, + builtinTypes: BuiltinTypes +) : LLFirModuleSession(ktModule, builtinTypes, Kind.Source) { internal abstract val moduleComponents: LLFirModuleResolveComponents final override fun getScopeSession(): ScopeSession { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirScriptSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirScriptSession.kt index d63f3782495..2f05c0c6097 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirScriptSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirScriptSession.kt @@ -5,15 +5,13 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents import org.jetbrains.kotlin.analysis.project.structure.KtScriptModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.PrivateSessionConstructor internal class LLFirScriptSession @PrivateSessionConstructor constructor( - override val ktModule: KtScriptModule, - override val project: Project, + ktModule: KtScriptModule, override val moduleComponents: LLFirModuleResolveComponents, builtinTypes: BuiltinTypes -) : LLFirResolvableModuleSession(builtinTypes) \ No newline at end of file +) : LLFirResolvableModuleSession(ktModule, builtinTypes) \ No newline at end of file diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSession.kt index 7693bae119f..12fcda17dcd 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSession.kt @@ -15,14 +15,22 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol @OptIn(PrivateSessionConstructor::class) -abstract class LLFirSession(override val builtinTypes: BuiltinTypes, kind: Kind) : FirSession(sessionProvider = null, kind) { - abstract val project: Project - abstract val ktModule: KtModule +abstract class LLFirSession( + val ktModule: KtModule, + override val builtinTypes: BuiltinTypes, + kind: Kind +) : FirSession(sessionProvider = null, kind) { + val project: Project + get() = ktModule.project abstract fun getScopeSession(): ScopeSession } -abstract class LLFirModuleSession(builtinTypes: BuiltinTypes, kind: Kind) : LLFirSession(builtinTypes, kind) +abstract class LLFirModuleSession( + ktModule: KtModule, + builtinTypes: BuiltinTypes, + kind: Kind +) : LLFirSession(ktModule, builtinTypes, kind) val FirElementWithResolvePhase.llFirSession: LLFirSession get() = moduleData.session as LLFirSession diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt index 7b9e7807b70..5f2fa1e9fda 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt @@ -67,7 +67,6 @@ internal object LLFirSessionFactory { val contentScope = module.contentScope val session = LLFirSourcesSession( module, - project, components, builtinsSession.builtinTypes ) @@ -169,7 +168,7 @@ internal object LLFirSessionFactory { val components = LLFirModuleResolveComponents(module, globalComponents, scopeProvider, sessionInvalidator) val contentScope = module.contentScope - val session = LLFirLibraryOrLibrarySourceResolvableModuleSession(module, project, components, builtinSession.builtinTypes) + val session = LLFirLibraryOrLibrarySourceResolvableModuleSession(module, components, builtinSession.builtinTypes) sessionsCache[module] = session components.session = session @@ -262,7 +261,7 @@ internal object LLFirSessionFactory { val components = LLFirModuleResolveComponents(module, globalResolveComponents, scopeProvider, sessionInvalidator) val contentScope = module.contentScope - val session = LLFirScriptSession(module, project, components, builtinsSession.builtinTypes) + val session = LLFirScriptSession(module, components, builtinsSession.builtinTypes) sessionsCache[module] = session components.session = session @@ -343,7 +342,7 @@ internal object LLFirSessionFactory { val components = LLFirModuleResolveComponents(module, globalResolveComponents, scopeProvider, sessionInvalidator) val contentScope = module.contentScope - val session = LLFirNonUnderContentRootResolvableModuleSession(module, project, components, builtinsSession.builtinTypes) + val session = LLFirNonUnderContentRootResolvableModuleSession(module, components, builtinsSession.builtinTypes) sessionsCache[module] = session components.session = session diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt index 3fa5f9f4c44..b39ab161a2a 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt @@ -5,17 +5,13 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder -import org.jetbrains.kotlin.analysis.project.structure.KtNotUnderContentRootModule import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.PrivateSessionConstructor internal class LLFirSourcesSession @PrivateSessionConstructor constructor( - override val ktModule: KtSourceModule, - override val project: Project, + ktModule: KtSourceModule, override val moduleComponents: LLFirModuleResolveComponents, builtinTypes: BuiltinTypes, -) : LLFirResolvableModuleSession(builtinTypes) +) : LLFirResolvableModuleSession(ktModule, builtinTypes)