[FIR] Make session & symbolProvider abstract classes

This commit is contained in:
Simon Ogorodnik
2019-06-05 18:09:55 +03:00
committed by Mikhail Glukhikh
parent 5a06027c53
commit 810fa9c171
14 changed files with 50 additions and 69 deletions
@@ -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) {
}