[FIR] Get rid of FirSession.moduleInfo
This commit is contained in:
committed by
TeamCityServer
parent
57a8642f5a
commit
f16194e60d
+2
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleVisibilityChecker
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.containerSource
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement
|
||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileKotlinClass
|
||||
@@ -18,7 +19,7 @@ import java.nio.file.Paths
|
||||
|
||||
class FirJvmModuleVisibilityChecker(private val session: FirSession) : FirModuleVisibilityChecker {
|
||||
override fun isInFriendModule(declaration: FirMemberDeclaration): Boolean {
|
||||
val moduleInfo = session.moduleInfo as? FirJvmModuleInfo ?: return false
|
||||
val moduleInfo = (session.moduleData as? FirModuleInfoBasedModuleData)?.moduleInfo as? FirJvmModuleInfo ?: return false
|
||||
val binaryClass = when (val source = declaration.containerSource) {
|
||||
is KotlinJvmBinarySourceElement -> source.binaryClass
|
||||
is JvmPackagePartSource -> source.knownJvmBinaryClass
|
||||
|
||||
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||
@OptIn(PrivateSessionConstructor::class, SessionConfiguration::class)
|
||||
object FirSessionFactory {
|
||||
class FirSessionConfigurator(private val session: FirSession) {
|
||||
private val registeredExtensions = mutableListOf<BunchOfRegisteredExtensions>(BunchOfRegisteredExtensions.empty())
|
||||
private val registeredExtensions: MutableList<BunchOfRegisteredExtensions> = mutableListOf(BunchOfRegisteredExtensions.empty())
|
||||
|
||||
fun registerExtensions(extensions: BunchOfRegisteredExtensions) {
|
||||
registeredExtensions += extensions
|
||||
@@ -78,7 +78,7 @@ object FirSessionFactory {
|
||||
lookupTracker: LookupTracker? = null,
|
||||
init: FirSessionConfigurator.() -> Unit = {}
|
||||
): FirJavaModuleBasedSession {
|
||||
return FirJavaModuleBasedSession(moduleInfo, sessionProvider).apply session@{
|
||||
return FirJavaModuleBasedSession(sessionProvider).apply session@{
|
||||
val moduleData = FirModuleInfoBasedModuleData(moduleInfo).apply { bindSession(this@session) }
|
||||
registerModuleData(moduleData)
|
||||
registerCliCompilerOnlyComponents()
|
||||
@@ -137,8 +137,9 @@ object FirSessionFactory {
|
||||
packagePartProvider: PackagePartProvider,
|
||||
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||
): FirLibrarySession {
|
||||
return FirLibrarySession(moduleInfo, sessionProvider).apply session@{
|
||||
return FirLibrarySession(sessionProvider).apply session@{
|
||||
val moduleData = FirModuleInfoBasedModuleData(moduleInfo).apply { bindSession(this@session) }
|
||||
sessionProvider.registerSession(moduleData, this)
|
||||
registerCliCompilerOnlyComponents()
|
||||
registerCommonComponents(languageVersionSettings)
|
||||
|
||||
|
||||
@@ -5,38 +5,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.java
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
class FirJavaModuleBasedSession @PrivateSessionConstructor constructor(
|
||||
moduleInfo: ModuleInfo,
|
||||
sessionProvider: FirProjectSessionProvider,
|
||||
) : FirModuleBasedSession(moduleInfo, sessionProvider) {
|
||||
init {
|
||||
sessionProvider.registerSession(moduleInfo, this)
|
||||
}
|
||||
}
|
||||
) : FirModuleBasedSession(sessionProvider)
|
||||
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
class FirLibrarySession @PrivateSessionConstructor constructor(
|
||||
override val moduleInfo: ModuleInfo,
|
||||
sessionProvider: FirProjectSessionProvider,
|
||||
) : FirSession(sessionProvider) {
|
||||
init {
|
||||
sessionProvider.registerSession(moduleInfo, this)
|
||||
sessionProvider: FirProjectSessionProvider
|
||||
) : FirSession(sessionProvider)
|
||||
|
||||
open class FirProjectSessionProvider : FirSessionProvider() {
|
||||
override fun getSession(moduleData: FirModuleData): FirSession? {
|
||||
return sessionCache[moduleData]
|
||||
}
|
||||
}
|
||||
|
||||
open class FirProjectSessionProvider : FirSessionProvider {
|
||||
override fun getSession(moduleInfo: ModuleInfo): FirSession? {
|
||||
return sessionCache[moduleInfo]
|
||||
}
|
||||
|
||||
fun registerSession(moduleInfo: ModuleInfo, session: FirSession) {
|
||||
sessionCache[moduleInfo] = session
|
||||
}
|
||||
|
||||
protected open val sessionCache: MutableMap<ModuleInfo, FirSession> = mutableMapOf()
|
||||
|
||||
fun registerSession(moduleData: FirModuleData, session: FirSession) {
|
||||
sessionCache[moduleData] = session
|
||||
}
|
||||
|
||||
protected open val sessionCache: MutableMap<FirModuleData, FirSession> = mutableMapOf()
|
||||
}
|
||||
|
||||
-2
@@ -18,8 +18,6 @@ class FirJavaEnhancementContext private constructor(
|
||||
this(session, lazy(LazyThreadSafetyMode.NONE, typeQualifiersComputation))
|
||||
|
||||
val defaultTypeQualifiers: JavaTypeQualifiersByElementType? by delegateForDefaultTypeQualifiers
|
||||
|
||||
val moduleInfo get() = session.moduleInfo
|
||||
}
|
||||
|
||||
fun extractDefaultNullabilityQualifier(
|
||||
|
||||
@@ -5,10 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
abstract class FirModuleBasedSession @PrivateSessionConstructor constructor(
|
||||
override val moduleInfo: ModuleInfo,
|
||||
sessionProvider: FirSessionProvider?
|
||||
) : FirSession(sessionProvider)
|
||||
|
||||
+4
-6
@@ -5,10 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.providers.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.caches.*
|
||||
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
|
||||
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
||||
@@ -31,10 +29,10 @@ open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirSymbolPro
|
||||
|
||||
|
||||
protected open val dependencyProviders by lazy {
|
||||
val moduleInfo = session.moduleInfo ?: return@lazy emptyList()
|
||||
moduleInfo.dependenciesWithoutSelf().mapNotNull {
|
||||
val moduleData = session.nullableModuleData ?: return@lazy emptyList()
|
||||
moduleData.dependencies.mapNotNull {
|
||||
session.sessionProvider?.getSession(it)?.symbolProvider
|
||||
}.toList()
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(FirSymbolProviderInternals::class, ExperimentalStdlibApi::class)
|
||||
|
||||
+2
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildImport
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
||||
|
||||
@@ -24,7 +25,7 @@ class FirDefaultSimpleImportingScope(
|
||||
|
||||
override val simpleImports = run {
|
||||
val importResolveTransformer = FirImportResolveTransformer(session)
|
||||
val analyzerServices = session.moduleInfo?.analyzerServices
|
||||
val analyzerServices = session.moduleData.analyzerServices
|
||||
val allDefaultImports = priority.getAllDefaultImports(analyzerServices, LanguageVersionSettingsImpl.DEFAULT)
|
||||
allDefaultImports
|
||||
?.filter { !it.isAllUnder }
|
||||
|
||||
+2
-2
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildImport
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildResolvedImport
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
@@ -20,10 +21,9 @@ class FirDefaultStarImportingScope(
|
||||
filter: FirImportingScopeFilter,
|
||||
priority: DefaultImportPriority
|
||||
) : FirAbstractStarImportingScope(session, scopeSession, filter, lookupInFir = false) {
|
||||
|
||||
// TODO: put languageVersionSettings into FirSession?
|
||||
override val starImports = run {
|
||||
val analyzerServices = session.moduleInfo?.analyzerServices
|
||||
val analyzerServices = session.moduleData.analyzerServices
|
||||
val allDefaultImports = priority.getAllDefaultImports(analyzerServices, LanguageVersionSettingsImpl.DEFAULT)
|
||||
allDefaultImports
|
||||
?.filter { it.isAllUnder }
|
||||
|
||||
@@ -41,4 +41,7 @@ class FirModuleDataImpl(
|
||||
override val analyzerServices: PlatformDependentAnalyzerServices
|
||||
) : FirModuleData()
|
||||
|
||||
val FirSession.moduleData: FirModuleData by FirSession.sessionComponentAccessor()
|
||||
val FirSession.nullableModuleData: FirModuleData? by FirSession.nullableSessionComponentAccessor()
|
||||
val FirSession.moduleData: FirModuleData
|
||||
get() = nullableModuleData ?: error("Module data is not registered in $this")
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.fir.types.impl.*
|
||||
import org.jetbrains.kotlin.fir.utils.ArrayMapAccessor
|
||||
import org.jetbrains.kotlin.fir.utils.ComponentArrayOwner
|
||||
@@ -27,8 +26,6 @@ abstract class FirSession @PrivateSessionConstructor constructor(val sessionProv
|
||||
}
|
||||
}
|
||||
|
||||
open val moduleInfo: ModuleInfo? get() = null
|
||||
|
||||
val javaTypeEnhancementState: JavaTypeEnhancementState? get() = null
|
||||
|
||||
open val builtinTypes: BuiltinTypes = BuiltinTypes()
|
||||
@@ -41,8 +38,8 @@ abstract class FirSession @PrivateSessionConstructor constructor(val sessionProv
|
||||
}
|
||||
}
|
||||
|
||||
interface FirSessionProvider {
|
||||
fun getSession(moduleInfo: ModuleInfo): FirSession?
|
||||
abstract class FirSessionProvider {
|
||||
abstract fun getSession(moduleData: FirModuleData): FirSession?
|
||||
}
|
||||
|
||||
class BuiltinTypes {
|
||||
|
||||
Reference in New Issue
Block a user