[FIR] Get rid of FirSessionProvider.project property

This commit is contained in:
Dmitriy Novozhilov
2020-10-07 13:06:42 +03:00
parent 82a2ecfe14
commit 20453bf0d8
8 changed files with 15 additions and 19 deletions
@@ -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()
}
@@ -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,
@@ -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]
}
@@ -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?
}
@@ -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)
@@ -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)
}
}
@@ -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<ModuleSourceInfo, FirIdeSession>
) : FirSessionProvider {
@@ -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<FirJavaModuleBasedSession, List<FirFile>>()
val processorsPerSession = mutableMapOf<FirJavaModuleBasedSession, List<FirTransformerBasedResolveProcessor>>()
val sessions = mutableListOf<FirJavaModuleBasedSession>()
val provider = FirProjectSessionProvider(project)
val provider = FirProjectSessionProvider()
for (module in project.allModules().drop(1)) {
val session = createSession(module, provider)
sessions += session