diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt index 871114fc2d1..47a24d5c6e3 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt @@ -6,7 +6,9 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder +import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol @@ -28,6 +30,11 @@ internal class KtFirTypeParameterSymbol( ) : KtTypeParameterSymbol(), KtFirSymbol { override val psi: PsiElement? by cached { firSymbol.findPsi() } + override val annotationsList: KtAnnotationsList + get() = withValidityAssertion { + KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) + } + override val name: Name get() = withValidityAssertion { firSymbol.name } override val upperBounds: List by cached { diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt index e8c2ca1702a..b8804fa94ee 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.types.Variance -public sealed class KtClassifierSymbol : KtSymbol, KtPossiblyNamedSymbol, KtDeclarationSymbol +public sealed class KtClassifierSymbol : KtSymbol, KtAnnotatedSymbol, KtPossiblyNamedSymbol, KtDeclarationSymbol public val KtClassifierSymbol.nameOrAnonymous: Name get() = name ?: SpecialNames.ANONYMOUS diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.kt index 3013ac034f5..dd87a027404 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.kt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.kt @@ -1,2 +1,3 @@ -class A { +import org.jetbrains.annotations.NotNull +class A<@NotNull T, R> { } diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.pretty.txt index f094e3bc423..0a7e0ff490e 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.pretty.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.pretty.txt @@ -1 +1 @@ -class A +class A<@org.jetbrains.annotations.NotNull T, R> \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.txt index e56cfa3360f..c6c0d0a776a 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/classWithTypeParams.txt @@ -1,4 +1,8 @@ KtTypeParameterSymbol: + annotationsList: [ + org/jetbrains/annotations/NotNull() + psi: KtAnnotationEntry + ] isReified: false name: T origin: SOURCE @@ -10,6 +14,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: R origin: SOURCE diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/functionWithTypeParams.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/functionWithTypeParams.txt index 26e55164828..7b9a41c71da 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/functionWithTypeParams.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/functionWithTypeParams.txt @@ -1,4 +1,5 @@ KtTypeParameterSymbol: + annotationsList: [] isReified: false name: X origin: SOURCE diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.descriptors.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.descriptors.txt index e044c8442ae..c0c7a5e1a6b 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.descriptors.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.descriptors.txt @@ -1,4 +1,5 @@ KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T origin: SOURCE @@ -10,6 +11,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T1 origin: SOURCE @@ -45,6 +47,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T2 origin: SOURCE @@ -80,6 +83,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T3 origin: SOURCE @@ -91,6 +95,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T4 origin: SOURCE @@ -102,6 +107,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T5 origin: SOURCE @@ -137,6 +143,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T6 origin: SOURCE diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.txt index 42ee3fd0a83..26878205e9b 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/outerAndInnerClasses.txt @@ -1,4 +1,5 @@ KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T origin: SOURCE @@ -10,6 +11,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T1 origin: SOURCE @@ -45,6 +47,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T2 origin: SOURCE @@ -80,6 +83,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T3 origin: SOURCE @@ -91,6 +95,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T4 origin: SOURCE @@ -102,6 +107,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T5 origin: SOURCE @@ -137,6 +143,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T6 origin: SOURCE diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt index 176620e160d..c16dd316d00 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt @@ -1,4 +1,5 @@ KtTypeParameterSymbol: + annotationsList: [] isReified: false name: T origin: SOURCE @@ -34,6 +35,7 @@ KtNamedClassOrObjectSymbol: deprecationStatus: null KtTypeParameterSymbol: + annotationsList: [] isReified: false name: Z origin: SOURCE