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