From 57a8642f5a491fe3ac99abe2ebb45184338555e1 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 30 Apr 2021 10:38:54 +0300 Subject: [PATCH] [FIR] Add analyzer services to FirModuleData --- .../kotlin/fir/session/FirModuleInfoBasedModuleData.kt | 4 ++++ .../tree/src/org/jetbrains/kotlin/fir/FirModuleData.kt | 8 +++++++- .../fir/low/level/api/sessions/FirIdeSessionFactory.kt | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirModuleInfoBasedModuleData.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirModuleInfoBasedModuleData.kt index 6827267a490..d6f52c3dbab 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirModuleInfoBasedModuleData.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirModuleInfoBasedModuleData.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform +import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices class FirModuleInfoBasedModuleData(val moduleInfo: ModuleInfo) : FirModuleData() { override val name: Name @@ -27,6 +28,9 @@ class FirModuleInfoBasedModuleData(val moduleInfo: ModuleInfo) : FirModuleData() override val platform: TargetPlatform get() = moduleInfo.platform + override val analyzerServices: PlatformDependentAnalyzerServices + get() = moduleInfo.analyzerServices + override fun equals(other: Any?): Boolean { if (other !is FirModuleInfoBasedModuleData) return false return moduleInfo == other.moduleInfo diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModuleData.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModuleData.kt index 76515b6163c..3a32ec14013 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModuleData.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModuleData.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform +import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices abstract class FirModuleData : FirSessionComponent { abstract val name: Name @@ -15,6 +16,10 @@ abstract class FirModuleData : FirSessionComponent { abstract val friendDependencies: List 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 val session: FirSession get() = _session!! @@ -32,7 +37,8 @@ class FirModuleDataImpl( override val dependencies: List, override val dependsOnDependencies: List, override val friendDependencies: List, - override val platform: TargetPlatform + override val platform: TargetPlatform, + override val analyzerServices: PlatformDependentAnalyzerServices ) : FirModuleData() val FirSession.moduleData: FirModuleData by FirSession.sessionComponentAccessor() diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionFactory.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionFactory.kt index 88eb58b0bba..be57fcfbef9 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionFactory.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/sessions/FirIdeSessionFactory.kt @@ -48,6 +48,7 @@ import org.jetbrains.kotlin.load.java.JavaClassFinderImpl import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.jvm.JvmPlatforms +import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices @OptIn(PrivateSessionConstructor::class, SessionConfiguration::class) internal object FirIdeSessionFactory { @@ -222,7 +223,8 @@ internal object FirIdeSessionFactory { emptyList(), emptyList(), emptyList(), - JvmPlatforms.unspecifiedJvmPlatform + JvmPlatforms.unspecifiedJvmPlatform, + JvmPlatformAnalyzerServices ).apply { bindSession(this@session) }