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.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope 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.JavaSymbolProvider
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
import org.jetbrains.kotlin.fir.registerCommonComponents 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 * [org.jetbrains.kotlin.fir.FirSession] responsible for all libraries analysing module transitively depends on
*/ */
internal class FirIdeLibrariesSession private constructor( internal class FirIdeLibrariesSession private constructor(
override val moduleInfo: ModuleInfo,
sessionProvider: FirIdeSessionProvider, sessionProvider: FirIdeSessionProvider,
override val scope: GlobalSearchScope override val scope: GlobalSearchScope
) : FirIdeSession(sessionProvider) { ) : FirIdeSession(sessionProvider) {
@@ -43,7 +45,7 @@ internal class FirIdeLibrariesSession private constructor(
val packagePartProvider = IDEPackagePartProvider(searchScope) val packagePartProvider = IDEPackagePartProvider(searchScope)
val kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope) val kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope)
return FirIdeLibrariesSession(sessionProvider, searchScope).apply { return FirIdeLibrariesSession(moduleInfo, sessionProvider, searchScope).apply {
registerCommonComponents() registerCommonComponents()
val javaSymbolProvider = JavaSymbolProvider(this, sessionProvider.project, searchScope) 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.module.impl.scopes.ModuleWithDependentsScope
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.analysis.registerCheckersComponent import org.jetbrains.kotlin.fir.analysis.registerCheckersComponent
import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions 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 * [org.jetbrains.kotlin.fir.FirSession] responsible for all Kotlin & Java source modules analysing module transitively depends on
*/ */
internal class FirIdeSourcesSession private constructor( internal class FirIdeSourcesSession private constructor(
override val moduleInfo: ModuleInfo?,
sessionProvider: FirIdeSessionProvider, sessionProvider: FirIdeSessionProvider,
override val scope: GlobalSearchScope, override val scope: GlobalSearchScope,
val firFileBuilder: FirFileBuilder, val firFileBuilder: FirFileBuilder,
@@ -57,7 +59,7 @@ internal class FirIdeSourcesSession private constructor(
val firBuilder = FirFileBuilder(scopeProvider, firPhaseRunner) val firBuilder = FirFileBuilder(scopeProvider, firPhaseRunner)
val dependentModules = moduleInfo.collectTransitiveDependenciesWithSelf().filterIsInstance<ModuleSourceInfo>() val dependentModules = moduleInfo.collectTransitiveDependenciesWithSelf().filterIsInstance<ModuleSourceInfo>()
val searchScope = ModuleWithDependentsScope(project, dependentModules.map { it.module }) 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 cache = ModuleFileCacheImpl(this)
val phasedFirFileResolver = IdePhasedFirFileResolver(firBuilder, cache) val phasedFirFileResolver = IdePhasedFirFileResolver(firBuilder, cache)