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 6d5a1660d89..89de823066c 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 @@ -35,14 +35,18 @@ class LLFirLibrarySessionFactory( ) { internal fun getLibrarySession(ktBinaryModule: KtBinaryModule, sessionsCache: MutableMap): LLFirLibrarySession { - return sessionsCache.getOrPut(ktBinaryModule) { createModuleLibrariesSession(ktBinaryModule) } as LLFirLibrarySession + return sessionsCache.getOrPut(ktBinaryModule) { + createModuleLibrariesSession(ktBinaryModule, sessionsCache) + } as LLFirLibrarySession } private fun createModuleLibrariesSession( ktLibraryModule: KtBinaryModule, + sessionsCache: MutableMap, ): LLFirLibrarySession { val platform = ktLibraryModule.platform val builtinsSession = LLFirBuiltinsSessionFactory.getInstance(project).getBuiltinsSession(platform) + sessionsCache.putIfAbsent(builtinsSession.ktModule, builtinsSession) return LLFirLibrarySession(ktLibraryModule, project, builtinsSession.builtinTypes).apply session@{ val moduleData = LLFirModuleData(ktLibraryModule).apply { bindSession(this@session) } registerModuleData(moduleData)