FIR IDE: add ModuleInfo for ide sessions as they are used for getting resolve components

This commit is contained in:
Ilya Kirillov
2020-08-25 13:55:41 +03:00
parent bc3e98b116
commit aae56cadac
2 changed files with 6 additions and 2 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.sessions
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
import org.jetbrains.kotlin.fir.registerCommonComponents
@@ -26,6 +27,7 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
* [org.jetbrains.kotlin.fir.FirSession] responsible for all libraries analysing module transitively depends on
*/
internal class FirIdeLibrariesSession private constructor(
override val moduleInfo: ModuleInfo,
sessionProvider: FirIdeSessionProvider,
override val scope: GlobalSearchScope
) : FirIdeSession(sessionProvider) {
@@ -43,7 +45,7 @@ internal class FirIdeLibrariesSession private constructor(
val packagePartProvider = IDEPackagePartProvider(searchScope)
val kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope)
return FirIdeLibrariesSession(sessionProvider, searchScope).apply {
return FirIdeLibrariesSession(moduleInfo, sessionProvider, searchScope).apply {
registerCommonComponents()
val javaSymbolProvider = JavaSymbolProvider(this, sessionProvider.project, searchScope)
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.sessions
import com.intellij.openapi.module.impl.scopes.ModuleWithDependentsScope
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.analysis.registerCheckersComponent
import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions
@@ -36,6 +37,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.util.collectTransitiveDepende
* [org.jetbrains.kotlin.fir.FirSession] responsible for all Kotlin & Java source modules analysing module transitively depends on
*/
internal class FirIdeSourcesSession private constructor(
override val moduleInfo: ModuleInfo?,
sessionProvider: FirIdeSessionProvider,
override val scope: GlobalSearchScope,
val firFileBuilder: FirFileBuilder,
@@ -57,7 +59,7 @@ internal class FirIdeSourcesSession private constructor(
val firBuilder = FirFileBuilder(scopeProvider, firPhaseRunner)
val dependentModules = moduleInfo.collectTransitiveDependenciesWithSelf().filterIsInstance<ModuleSourceInfo>()
val searchScope = ModuleWithDependentsScope(project, dependentModules.map { it.module })
return FirIdeSourcesSession(sessionProvider, searchScope, firBuilder).apply {
return FirIdeSourcesSession(moduleInfo, sessionProvider, searchScope, firBuilder).apply {
val cache = ModuleFileCacheImpl(this)
val phasedFirFileResolver = IdePhasedFirFileResolver(firBuilder, cache)