[FIR] Add ability to register session components from FIR plugins

This commit is contained in:
Dmitriy Novozhilov
2022-05-20 11:37:14 +03:00
committed by teamcity
parent 60df531c02
commit b948eaef4b
2 changed files with 43 additions and 1 deletions
@@ -0,0 +1,29 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.extensions
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionComponent
import kotlin.reflect.KClass
abstract class FirExtensionSessionComponent(session: FirSession) : FirExtension(session), FirSessionComponent {
companion object {
val NAME = FirExtensionPointName("ExtensionSessionComponent")
}
final override val name: FirExtensionPointName
get() = NAME
final override val extensionType: KClass<out FirExtension>
get() = FirExtensionSessionComponent::class
open val componentClass: KClass<out FirExtensionSessionComponent>
get() = this::class
fun interface Factory : FirExtension.Factory<FirExtensionSessionComponent>
}
val FirExtensionService.extensionSessionComponents: List<FirExtensionSessionComponent> by FirExtensionService.registeredExtensions()