diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirRegisteredExtension.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirRegisteredExtension.kt new file mode 100644 index 00000000000..6cbef064f66 --- /dev/null +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirRegisteredExtension.kt @@ -0,0 +1,54 @@ +/* + * Copyright 2010-2020 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 org.jetbrains.kotlin.fir.utils.ComponentArrayOwner +import org.jetbrains.kotlin.fir.utils.ComponentTypeRegistry +import org.jetbrains.kotlin.name.Name +import kotlin.properties.ReadOnlyProperty +import kotlin.reflect.KClass +import kotlin.reflect.KProperty + +abstract class FirExtensionPoint(val session: FirSession) { + abstract val name: FirExtensionPointName + + fun interface Factory
{ + fun create(session: FirSession): P + } +} + +data class FirExtensionPointName(val name: Name) { + constructor(name: String) : this(Name.identifier(name)) +} + +@Suppress("EXPERIMENTAL_FEATURE_WARNING") +inline class FirRegisteredExtension
(val extensions: List
)
+
+class FirExtensionPointService(
+ private val session: FirSession
+) : ComponentArrayOwner registerExtensions(extensionClass: KClass , extensions: List