[FIR] Allow all extensions register declaration predicates
This commit is contained in:
committed by
TeamCityServer
parent
ce218b8a0b
commit
e7af50fe2b
+4
-1
@@ -23,6 +23,10 @@ abstract class FirRegisteredPluginAnnotations(val session: FirSession) : FirSess
|
||||
|
||||
abstract val annotations: Set<AnnotationFqn>
|
||||
abstract val metaAnnotations: Set<AnnotationFqn>
|
||||
|
||||
val hasRegisteredAnnotations: Boolean
|
||||
get() = annotations.isNotEmpty() || metaAnnotations.isNotEmpty()
|
||||
|
||||
abstract fun getAnnotationsWithMetaAnnotation(metaAnnotation: AnnotationFqn): Collection<AnnotationFqn>
|
||||
|
||||
abstract fun registerUserDefinedAnnotation(metaAnnotation: AnnotationFqn, annotationClasses: Collection<FirRegularClass>)
|
||||
@@ -80,7 +84,6 @@ private class FirRegisteredPluginAnnotationsImpl(session: FirSession) : FirRegis
|
||||
}
|
||||
|
||||
for (extension in session.extensionService.getAllExtensions()) {
|
||||
if (extension !is FirPredicateBasedExtension) continue
|
||||
with(extension) {
|
||||
registrar.registerPredicates()
|
||||
}
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class FirStatusTransformerExtension(session: FirSession) : FirPredicateBasedExtension(session) {
|
||||
abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension(session) {
|
||||
companion object {
|
||||
val NAME = FirExtensionPointName("StatusTransformer")
|
||||
}
|
||||
|
||||
+1
-2
@@ -8,10 +8,9 @@ package org.jetbrains.kotlin.fir.extensions
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class FirSupertypeGenerationExtension(session: FirSession) : FirPredicateBasedExtension(session) {
|
||||
abstract class FirSupertypeGenerationExtension(session: FirSession) : FirExtension(session) {
|
||||
companion object {
|
||||
val NAME = FirExtensionPointName("SupertypeGenerator")
|
||||
}
|
||||
|
||||
+1
-1
@@ -54,8 +54,8 @@ class FirPluginAnnotationsResolveTransformer(
|
||||
|
||||
override fun transformFile(file: FirFile, data: Any?): FirFile {
|
||||
checkSessionConsistency(file)
|
||||
if (!extensionService.hasPredicateBasedExtensions) return file
|
||||
val registeredPluginAnnotations = session.registeredPluginAnnotations
|
||||
if (!registeredPluginAnnotations.hasRegisteredAnnotations) return file
|
||||
val newAnnotations = file.resolveAnnotations(registeredPluginAnnotations.annotations, registeredPluginAnnotations.metaAnnotations)
|
||||
if (!newAnnotations.isEmpty) {
|
||||
for (metaAnnotation in newAnnotations.keySet()) {
|
||||
|
||||
Reference in New Issue
Block a user