[FIR] Make session & symbolProvider abstract classes
This commit is contained in:
committed by
Mikhail Glukhikh
parent
5a06027c53
commit
810fa9c171
@@ -9,17 +9,24 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.utils.Jsr305State
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
interface FirSession {
|
||||
val moduleInfo: ModuleInfo?
|
||||
|
||||
val sessionProvider: FirSessionProvider? get() = null
|
||||
abstract class FirSession(val sessionProvider: FirSessionProvider?) {
|
||||
open val moduleInfo: ModuleInfo? get() = null
|
||||
|
||||
val jsr305State: Jsr305State? get() = null
|
||||
|
||||
val components: Map<KClass<*>, Any>
|
||||
|
||||
val components: MutableMap<KClass<*>, Any> = mutableMapOf()
|
||||
|
||||
var _firSymbolProvider: Any? = null
|
||||
|
||||
|
||||
fun <T : Any> getService(kclass: KClass<T>): T =
|
||||
components[kclass] as T
|
||||
|
||||
protected fun <T : Any> registerComponent(tClass: KClass<T>, t: T) {
|
||||
assert(tClass !in components) { "Already registered component" }
|
||||
components[tClass] = t
|
||||
}
|
||||
}
|
||||
|
||||
interface FirSessionProvider {
|
||||
|
||||
@@ -5,18 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class FirSessionBase : FirSession {
|
||||
override val components: MutableMap<KClass<*>, Any> = mutableMapOf()
|
||||
|
||||
override val moduleInfo: ModuleInfo?
|
||||
get() = null
|
||||
|
||||
protected fun <T : Any> registerComponent(tClass: KClass<T>, t: T) {
|
||||
assert(tClass !in components) { "Already registered component" }
|
||||
components[tClass] = t
|
||||
}
|
||||
abstract class FirSessionBase(sessionProvider: FirSessionProvider?) : FirSession(sessionProvider) {
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user