[FIR] Introduce module :fir:entrypoint and FirSessionFactory for creating sessions

This commit is contained in:
Dmitriy Novozhilov
2020-08-28 16:04:00 +03:00
parent 94d58c714a
commit a8d23c36f5
25 changed files with 269 additions and 207 deletions
@@ -15,9 +15,12 @@ import org.jetbrains.kotlin.fir.utils.TypeRegistry
import org.jetbrains.kotlin.utils.Jsr305State
import kotlin.reflect.KClass
@RequiresOptIn
annotation class PrivateSessionConstructor
interface FirSessionComponent
abstract class FirSession(val sessionProvider: FirSessionProvider?) : ComponentArrayOwner<FirSessionComponent, FirSessionComponent>() {
abstract class FirSession @PrivateSessionConstructor constructor(val sessionProvider: FirSessionProvider?) : ComponentArrayOwner<FirSessionComponent, FirSessionComponent>() {
companion object : TypeRegistry<FirSessionComponent, FirSessionComponent>() {
inline fun <reified T : FirSessionComponent> sessionComponentAccessor(): ArrayMapAccessor<FirSessionComponent, FirSessionComponent, T> {
return generateAccessor(T::class)
@@ -64,4 +67,4 @@ class BuiltinTypes {
val nullableNothingType: FirImplicitBuiltinTypeRef = FirImplicitNullableNothingTypeRef(null)
val charType: FirImplicitBuiltinTypeRef = FirImplicitCharTypeRef(null)
val stringType: FirImplicitBuiltinTypeRef = FirImplicitStringTypeRef(null)
}
}