[FIR] Refactor session components initialization

From now all customization of session should perform via DSL which
  declared in FirSessionFactory. Registration or mutation session
  services from other places is prohibited
This commit is contained in:
Dmitriy Novozhilov
2020-08-28 17:35:23 +03:00
parent 2819bd3aaf
commit 6db8c28291
24 changed files with 158 additions and 149 deletions
@@ -18,6 +18,9 @@ import kotlin.reflect.KClass
@RequiresOptIn
annotation class PrivateSessionConstructor
@RequiresOptIn
annotation class SessionConfiguration
interface FirSessionComponent
abstract class FirSession @PrivateSessionConstructor constructor(val sessionProvider: FirSessionProvider?) : ComponentArrayOwner<FirSessionComponent, FirSessionComponent>() {
@@ -39,6 +42,7 @@ abstract class FirSession @PrivateSessionConstructor constructor(val sessionProv
final override val typeRegistry: TypeRegistry<FirSessionComponent, FirSessionComponent> = Companion
@SessionConfiguration
fun register(tClass: KClass<out FirSessionComponent>, value: FirSessionComponent) {
registerComponent(tClass, value)
}