From 46d443770e301fe7d6f8311a34c83b41c4817087 Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Tue, 28 Feb 2023 13:47:59 +0100 Subject: [PATCH] [AA] KT-56617 Don't defer to `firSymbol` for empty annotation lists - `FirJavaClass` gets all its annotations from the Java annotations, so we can rely on `javaClass.annotations` to determine if any annotations are present. --- .../analysis/api/fir/symbols/KtFirPsiJavaClassSymbol.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPsiJavaClassSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPsiJavaClassSymbol.kt index b7a5ee67584..3929df4bb78 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPsiJavaClassSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPsiJavaClassSymbol.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.utils.cached +import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList import org.jetbrains.kotlin.analysis.api.impl.base.symbols.toKtClassKind import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion @@ -112,7 +113,8 @@ internal class KtFirPsiJavaClassSymbol( } override val annotationsList: KtAnnotationsList by cached { - KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token) + if (javaClass.annotations.isEmpty()) KtEmptyAnnotationsList(token) + else KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token) } context(KtAnalysisSession)