From 24f1f7b7b2d23cdae833778946b0061651172ac6 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 30 Apr 2021 11:15:58 +0300 Subject: [PATCH] [FIR] Unify FirLibrarySession and FirJavaModuleBasedSession into single FirCliSession --- .../kotlin/fir/session/FirSessionFactory.kt | 8 ++++---- ...aModuleBasedSession.kt => FirCliSession.kt} | 18 +++++++++--------- .../kotlin/fir/FirModuleBasedSession.kt | 11 ----------- .../api/AbstractFirMultiModuleResolveTest.kt | 12 +++++------- 4 files changed, 18 insertions(+), 31 deletions(-) rename compiler/fir/java/src/org/jetbrains/kotlin/fir/java/{FirJavaModuleBasedSession.kt => FirCliSession.kt} (57%) delete mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirModuleBasedSession.kt 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 5553fc55710..e062166b9f2 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 @@ -77,8 +77,8 @@ object FirSessionFactory { languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, lookupTracker: LookupTracker? = null, init: FirSessionConfigurator.() -> Unit = {} - ): FirJavaModuleBasedSession { - return FirJavaModuleBasedSession(sessionProvider).apply session@{ + ): FirSession { + return FirCliSession(sessionProvider, FirCliSession.Kind.Source).apply session@{ val moduleData = FirModuleInfoBasedModuleData(moduleInfo).apply { bindSession(this@session) } registerModuleData(moduleData) registerCliCompilerOnlyComponents() @@ -136,8 +136,8 @@ object FirSessionFactory { project: Project, packagePartProvider: PackagePartProvider, languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, - ): FirLibrarySession { - return FirLibrarySession(sessionProvider).apply session@{ + ): FirSession { + return FirCliSession(sessionProvider, FirCliSession.Kind.Library).apply session@{ val moduleData = FirModuleInfoBasedModuleData(moduleInfo).apply { bindSession(this@session) } sessionProvider.registerSession(moduleData, this) registerCliCompilerOnlyComponents() diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirCliSession.kt similarity index 57% rename from compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt rename to compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirCliSession.kt index 7e9d457c29b..4d392d87119 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirCliSession.kt @@ -8,16 +8,16 @@ package org.jetbrains.kotlin.fir.java import org.jetbrains.kotlin.fir.* @OptIn(PrivateSessionConstructor::class) -class FirJavaModuleBasedSession @PrivateSessionConstructor constructor( +class FirCliSession @PrivateSessionConstructor constructor( sessionProvider: FirProjectSessionProvider, -) : FirModuleBasedSession(sessionProvider) + val kind: Kind // used for debug +) : FirSession(sessionProvider) { + enum class Kind { + Source, Library + } +} -@OptIn(PrivateSessionConstructor::class) -class FirLibrarySession @PrivateSessionConstructor constructor( - sessionProvider: FirProjectSessionProvider -) : FirSession(sessionProvider) - -open class FirProjectSessionProvider : FirSessionProvider() { +class FirProjectSessionProvider : FirSessionProvider() { override fun getSession(moduleData: FirModuleData): FirSession? { return sessionCache[moduleData] } @@ -26,5 +26,5 @@ open class FirProjectSessionProvider : FirSessionProvider() { sessionCache[moduleData] = session } - protected open val sessionCache: MutableMap = mutableMapOf() + private val sessionCache: MutableMap = mutableMapOf() } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirModuleBasedSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirModuleBasedSession.kt deleted file mode 100644 index dc3646e4423..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirModuleBasedSession.kt +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir - -@OptIn(PrivateSessionConstructor::class) -abstract class FirModuleBasedSession @PrivateSessionConstructor constructor( - sessionProvider: FirSessionProvider? -) : FirSession(sessionProvider) 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 cf61329f913..c35053b9acc 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 @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.idea.caches.project.isLibraryClasses import org.jetbrains.kotlin.idea.caches.project.productionSourceInfo import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.moduleInfoUnsafe -import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.moduleSourceInfo import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromDirStructure import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil @@ -34,7 +33,6 @@ import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind -import org.jetbrains.kotlin.utils.addToStdlib.cast import java.io.File abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { @@ -55,20 +53,20 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { doFirResolveTest(dirPath) } - private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession { + private fun createSession(module: Module, provider: FirProjectSessionProvider): FirSession { val moduleInfo = module.productionSourceInfo()!! return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope(), project) } - private fun createLibrarySession(moduleInfo: IdeaModuleInfo, provider: FirProjectSessionProvider): FirLibrarySession { + private fun createLibrarySession(moduleInfo: IdeaModuleInfo, provider: FirProjectSessionProvider): FirSession { val contentScope = moduleInfo.contentScope() return FirSessionFactory.createLibrarySession(moduleInfo, provider, contentScope, project, IDEPackagePartProvider(contentScope)) } private fun doFirResolveTest(dirPath: String) { - val firFilesPerSession = mutableMapOf>() - val processorsPerSession = mutableMapOf>() - val sessions = mutableListOf() + val firFilesPerSession = mutableMapOf>() + val processorsPerSession = mutableMapOf>() + val sessions = mutableListOf() val provider = FirProjectSessionProvider() for (module in project.allModules().drop(1)) { val session = createSession(module, provider)