[FIR] Add proper extension key to FirExtensionPoint
This commit is contained in:
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO:
|
* TODO:
|
||||||
@@ -26,6 +27,8 @@ abstract class FirClassGenerationExtension(session: FirSession) : FirExtensionPo
|
|||||||
|
|
||||||
final override val mode: Mode = Mode.ANNOTATED_ELEMENT
|
final override val mode: Mode = Mode.ANNOTATED_ELEMENT
|
||||||
|
|
||||||
|
final override val extensionType: KClass<out FirExtensionPoint> = FirClassGenerationExtension::class
|
||||||
|
|
||||||
abstract fun <T> generateClass(
|
abstract fun <T> generateClass(
|
||||||
containingFile: FirFile,
|
containingFile: FirFile,
|
||||||
annotatedDeclaration: T
|
annotatedDeclaration: T
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.extensions
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
typealias AnnotationFqn = FqName
|
typealias AnnotationFqn = FqName
|
||||||
|
|
||||||
@@ -19,6 +20,8 @@ abstract class FirExtensionPoint(val session: FirSession) {
|
|||||||
|
|
||||||
abstract val mode: Mode
|
abstract val mode: Mode
|
||||||
|
|
||||||
|
internal abstract val extensionType: KClass<out FirExtensionPoint>
|
||||||
|
|
||||||
fun interface Factory<P : FirExtensionPoint> {
|
fun interface Factory<P : FirExtensionPoint> {
|
||||||
fun create(session: FirSession): P
|
fun create(session: FirSession): P
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -96,7 +96,7 @@ class FirExtensionPointService(
|
|||||||
val extensions = extensionsWithMetaAnnotations[metaAnnotation]
|
val extensions = extensionsWithMetaAnnotations[metaAnnotation]
|
||||||
if (extensions.isEmpty()) return
|
if (extensions.isEmpty()) return
|
||||||
for (extension in extensions) {
|
for (extension in extensions) {
|
||||||
val registeredExtensions = this[extension::class]
|
val registeredExtensions = this[extension.extensionType]
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val map = when (extension.mode) {
|
val map = when (extension.mode) {
|
||||||
|
|||||||
+3
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
abstract class FirStatusTransformerExtension(session: FirSession) : FirExtensionPoint(session) {
|
abstract class FirStatusTransformerExtension(session: FirSession) : FirExtensionPoint(session) {
|
||||||
companion object {
|
companion object {
|
||||||
@@ -22,6 +23,8 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
|||||||
final override val name: FirExtensionPointName
|
final override val name: FirExtensionPointName
|
||||||
get() = NAME
|
get() = NAME
|
||||||
|
|
||||||
|
final override val extensionType: KClass<out FirExtensionPoint> = FirStatusTransformerExtension::class
|
||||||
|
|
||||||
abstract fun transformStatus(declaration: FirDeclaration, status: FirDeclarationStatus): FirDeclarationStatus
|
abstract fun transformStatus(declaration: FirDeclaration, status: FirDeclarationStatus): FirDeclarationStatus
|
||||||
|
|
||||||
fun interface Factory : FirExtensionPoint.Factory<FirStatusTransformerExtension>
|
fun interface Factory : FirExtensionPoint.Factory<FirStatusTransformerExtension>
|
||||||
|
|||||||
Reference in New Issue
Block a user