[FIR] Add kind to all FirSessions
This commit is contained in:
committed by
teamcityserver
parent
2c1ada131d
commit
8729421e7a
@@ -131,7 +131,7 @@ object FirSessionFactory {
|
||||
lookupTracker: LookupTracker? = null,
|
||||
init: FirSessionConfigurator.() -> Unit = {}
|
||||
): FirSession {
|
||||
return FirCliSession(sessionProvider, FirCliSession.Kind.Source).apply session@{
|
||||
return FirCliSession(sessionProvider, FirSession.Kind.Source).apply session@{
|
||||
moduleData.bindSession(this@session)
|
||||
sessionProvider.registerSession(moduleData, this@session)
|
||||
registerModuleData(moduleData)
|
||||
@@ -197,7 +197,7 @@ object FirSessionFactory {
|
||||
packagePartProvider: PackagePartProvider,
|
||||
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||
): FirSession {
|
||||
return FirCliSession(sessionProvider, FirCliSession.Kind.Library).apply session@{
|
||||
return FirCliSession(sessionProvider, FirSession.Kind.Library).apply session@{
|
||||
moduleDataProvider.allModuleData.forEach {
|
||||
sessionProvider.registerSession(it, this)
|
||||
it.bindSession(this)
|
||||
@@ -271,7 +271,7 @@ object FirSessionFactory {
|
||||
|
||||
@TestOnly
|
||||
fun createEmptySession(): FirSession {
|
||||
return object : FirSession(null) {}.apply {
|
||||
return object : FirSession(null, Kind.Source) {}.apply {
|
||||
val moduleData = FirModuleDataImpl(
|
||||
Name.identifier("<stub module>"),
|
||||
dependencies = emptyList(),
|
||||
|
||||
@@ -10,12 +10,8 @@ import org.jetbrains.kotlin.fir.*
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
class FirCliSession @PrivateSessionConstructor constructor(
|
||||
sessionProvider: FirProjectSessionProvider,
|
||||
val kind: Kind // used for debug
|
||||
) : FirSession(sessionProvider) {
|
||||
enum class Kind {
|
||||
Source, Library
|
||||
}
|
||||
}
|
||||
kind: Kind
|
||||
) : FirSession(sessionProvider, kind)
|
||||
|
||||
class FirProjectSessionProvider : FirSessionProvider() {
|
||||
override fun getSession(moduleData: FirModuleData): FirSession? {
|
||||
|
||||
@@ -15,7 +15,8 @@ import kotlin.reflect.KClass
|
||||
interface FirSessionComponent
|
||||
|
||||
abstract class FirSession @PrivateSessionConstructor constructor(
|
||||
val sessionProvider: FirSessionProvider?
|
||||
val sessionProvider: FirSessionProvider?,
|
||||
val kind: Kind
|
||||
) : ComponentArrayOwner<FirSessionComponent, FirSessionComponent>() {
|
||||
companion object : TypeRegistry<FirSessionComponent, FirSessionComponent>() {
|
||||
inline fun <reified T : FirSessionComponent> sessionComponentAccessor(): ArrayMapAccessor<FirSessionComponent, FirSessionComponent, T> {
|
||||
@@ -40,6 +41,10 @@ abstract class FirSession @PrivateSessionConstructor constructor(
|
||||
val moduleData = nullableModuleData ?: return "Libraries session"
|
||||
return "Source session for module ${moduleData.name}"
|
||||
}
|
||||
|
||||
enum class Kind {
|
||||
Source, Library
|
||||
}
|
||||
}
|
||||
|
||||
abstract class FirSessionProvider {
|
||||
|
||||
+1
-1
@@ -13,4 +13,4 @@ import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
||||
class FirIdeBuiltinsAndCloneableSession @PrivateSessionConstructor constructor(
|
||||
override val project: Project,
|
||||
builtinTypes: BuiltinTypes,
|
||||
) : FirIdeSession(builtinTypes)
|
||||
) : FirIdeSession(builtinTypes, Kind.Library)
|
||||
|
||||
+1
-1
@@ -19,4 +19,4 @@ internal class FirIdeLibrariesSession @PrivateSessionConstructor constructor(
|
||||
override val project: Project,
|
||||
override val scope: GlobalSearchScope,
|
||||
builtinTypes: BuiltinTypes,
|
||||
) : FirIdeModuleSession(builtinTypes)
|
||||
) : FirIdeModuleSession(builtinTypes, Kind.Library)
|
||||
|
||||
+2
-2
@@ -12,11 +12,11 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
||||
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
abstract class FirIdeSession(override val builtinTypes: BuiltinTypes) : FirSession(sessionProvider = null) {
|
||||
abstract class FirIdeSession(override val builtinTypes: BuiltinTypes, kind: Kind) : FirSession(sessionProvider = null, kind) {
|
||||
abstract val project: Project
|
||||
}
|
||||
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
abstract class FirIdeModuleSession(builtinTypes: BuiltinTypes) : FirIdeSession(builtinTypes) {
|
||||
abstract class FirIdeModuleSession(builtinTypes: BuiltinTypes, kind: Kind) : FirIdeSession(builtinTypes, kind) {
|
||||
abstract val scope: GlobalSearchScope
|
||||
}
|
||||
|
||||
+1
-1
@@ -268,7 +268,7 @@ internal object FirIdeSessionFactory {
|
||||
)
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
fun createEmptySession(): FirSession {
|
||||
return object : FirSession(null) {}.apply {
|
||||
return object : FirSession(null, Kind.Source) {}.apply {
|
||||
val moduleData = FirModuleDataImpl(
|
||||
Name.identifier("<stub module>"),
|
||||
dependencies = emptyList(),
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ internal class FirIdeSourcesSession @PrivateSessionConstructor constructor(
|
||||
override val scope: GlobalSearchScope,
|
||||
val firFileBuilder: FirFileBuilder,
|
||||
builtinTypes: BuiltinTypes,
|
||||
) : FirIdeModuleSession( builtinTypes) {
|
||||
) : FirIdeModuleSession(builtinTypes, Kind.Source) {
|
||||
val cache get() = firIdeProvider.cache
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user