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) {