diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionPointService.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionPointService.kt
index 8418b7b0f88..5eb027694f8 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionPointService.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionPointService.kt
@@ -52,6 +52,7 @@ class FirExtensionPointService(
get() = Companion
fun
registerExtensions(extensionClass: KClass
, extensionFactories: List>) {
+ registeredExtensionsSize += extensionFactories.size
val extensions = extensionFactories.map { it.create(session) }
val extensionsWithAllMode = mutableListOf()
@@ -116,6 +117,9 @@ class FirExtensionPointService(
private val extensionsWithMetaAnnotations: Multimap = createMultimap()
+ var registeredExtensionsSize: Int = 0
+ private set
+
class ExtensionsAccessor(
private val session: FirSession,
private val extensions: FirRegisteredExtension
@@ -152,4 +156,7 @@ val FirSession.extensionPointService: FirExtensionPointService by FirSession.ses
fun FirAnnotationCall.fqName(session: FirSession): FqName? {
val symbol = session.firSymbolProvider.getSymbolByTypeRef(annotationTypeRef) ?: return null
return symbol.classId.asSingleFqName()
-}
\ No newline at end of file
+}
+
+val FirExtensionPointService.hasExtensions: Boolean
+ get() = registeredExtensionsSize > 0
\ No newline at end of file
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirPluginAnnotationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirPluginAnnotationsResolveTransformer.kt
index db9c10f2f82..a3dfa57bcd9 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirPluginAnnotationsResolveTransformer.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirPluginAnnotationsResolveTransformer.kt
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.extensions.AnnotationFqn
import org.jetbrains.kotlin.fir.extensions.extensionPointService
import org.jetbrains.kotlin.fir.extensions.fqName
+import org.jetbrains.kotlin.fir.extensions.hasExtensions
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.FirSpecificTypeResolverTransformer
@@ -28,8 +29,9 @@ class FirPluginAnnotationsResolveTransformer(private val scopeSession: ScopeSess
}
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult {
- file.replaceResolvePhase(FirResolvePhase.ANNOTATIONS_FOR_PLUGINS)
val extensionPointService = file.session.extensionPointService
+ if (!extensionPointService.hasExtensions) return file.compose()
+ file.replaceResolvePhase(FirResolvePhase.ANNOTATIONS_FOR_PLUGINS)
val newAnnotations = file.resolveAnnotations(extensionPointService.annotations, extensionPointService.metaAnnotations)
if (newAnnotations.isNotEmpty()) {
for (annotationClass in newAnnotations) {