From 7529965619de6f196a51a4425393565e00b06f7c Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Wed, 7 Sep 2022 23:45:03 -0700 Subject: [PATCH] LL FIR: cache built-ins module to session --- .../api/fir/project/structure/LLFirLibrarySessionFactory.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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)