[FIR] Add analyzer services to FirModuleData

This commit is contained in:
Dmitriy Novozhilov
2021-04-30 10:38:54 +03:00
committed by TeamCityServer
parent 92d6b39ffe
commit 57a8642f5a
3 changed files with 14 additions and 2 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
class FirModuleInfoBasedModuleData(val moduleInfo: ModuleInfo) : FirModuleData() { class FirModuleInfoBasedModuleData(val moduleInfo: ModuleInfo) : FirModuleData() {
override val name: Name override val name: Name
@@ -27,6 +28,9 @@ class FirModuleInfoBasedModuleData(val moduleInfo: ModuleInfo) : FirModuleData()
override val platform: TargetPlatform override val platform: TargetPlatform
get() = moduleInfo.platform get() = moduleInfo.platform
override val analyzerServices: PlatformDependentAnalyzerServices
get() = moduleInfo.analyzerServices
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
if (other !is FirModuleInfoBasedModuleData) return false if (other !is FirModuleInfoBasedModuleData) return false
return moduleInfo == other.moduleInfo return moduleInfo == other.moduleInfo
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
abstract class FirModuleData : FirSessionComponent { abstract class FirModuleData : FirSessionComponent {
abstract val name: Name abstract val name: Name
@@ -15,6 +16,10 @@ abstract class FirModuleData : FirSessionComponent {
abstract val friendDependencies: List<FirModuleData> abstract val friendDependencies: List<FirModuleData>
abstract val platform: TargetPlatform abstract val platform: TargetPlatform
// TODO: analyzerServices are needed only as default imports providers
// refactor them to make API clearer
abstract val analyzerServices: PlatformDependentAnalyzerServices
private var _session: FirSession? = null private var _session: FirSession? = null
val session: FirSession val session: FirSession
get() = _session!! get() = _session!!
@@ -32,7 +37,8 @@ class FirModuleDataImpl(
override val dependencies: List<FirModuleData>, override val dependencies: List<FirModuleData>,
override val dependsOnDependencies: List<FirModuleData>, override val dependsOnDependencies: List<FirModuleData>,
override val friendDependencies: List<FirModuleData>, override val friendDependencies: List<FirModuleData>,
override val platform: TargetPlatform override val platform: TargetPlatform,
override val analyzerServices: PlatformDependentAnalyzerServices
) : FirModuleData() ) : FirModuleData()
val FirSession.moduleData: FirModuleData by FirSession.sessionComponentAccessor() val FirSession.moduleData: FirModuleData by FirSession.sessionComponentAccessor()
@@ -48,6 +48,7 @@ import org.jetbrains.kotlin.load.java.JavaClassFinderImpl
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
@OptIn(PrivateSessionConstructor::class, SessionConfiguration::class) @OptIn(PrivateSessionConstructor::class, SessionConfiguration::class)
internal object FirIdeSessionFactory { internal object FirIdeSessionFactory {
@@ -222,7 +223,8 @@ internal object FirIdeSessionFactory {
emptyList(), emptyList(),
emptyList(), emptyList(),
emptyList(), emptyList(),
JvmPlatforms.unspecifiedJvmPlatform JvmPlatforms.unspecifiedJvmPlatform,
JvmPlatformAnalyzerServices
).apply { ).apply {
bindSession(this@session) bindSession(this@session)
} }