diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java index b2f5c881664..bdb5e64b207 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java @@ -190,6 +190,12 @@ public class Fe10IdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated ext runTest("analysis/analysis-api/testData/symbols/symbolByReference/typeAnnotationOnBackingField.kt"); } + @Test + @TestMetadata("typeParameter.kt") + public void testTypeParameter() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.kt"); + } + @Test @TestMetadata("valueParameter.kt") public void testValueParameter() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java index 3cabe49a8bd..3eaf3b2cd06 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java @@ -190,6 +190,12 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByReferenceTestGenerated exte runTest("analysis/analysis-api/testData/symbols/symbolByReference/typeAnnotationOnBackingField.kt"); } + @Test + @TestMetadata("typeParameter.kt") + public void testTypeParameter() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.kt"); + } + @Test @TestMetadata("valueParameter.kt") public void testValueParameter() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java index 290fadba8c5..689c4e5d688 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByReferenceTestGenerated.java @@ -190,6 +190,12 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByReferenceTestGenerat runTest("analysis/analysis-api/testData/symbols/symbolByReference/typeAnnotationOnBackingField.kt"); } + @Test + @TestMetadata("typeParameter.kt") + public void testTypeParameter() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.kt"); + } + @Test @TestMetadata("valueParameter.kt") public void testValueParameter() throws Exception { diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/KtTypeParametersRenderer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/KtTypeParametersRenderer.kt index 332e6726cfe..ac274d10a44 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/KtTypeParametersRenderer.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/KtTypeParametersRenderer.kt @@ -37,6 +37,7 @@ public interface KtTypeParametersRenderer { .ifEmpty { return } printer.printCollection(typeParameters, prefix = "<", postfix = ">") { typeParameter -> codeStyle.getSeparatorBetweenAnnotationAndOwner(typeParameter).separated( + { annotationRenderer.renderAnnotations(typeParameter, printer) }, { modifiersRenderer.renderDeclarationModifiers(typeParameter, printer) }, { nameRenderer.renderName(typeParameter, printer) }, ) @@ -56,6 +57,7 @@ public interface KtTypeParametersRenderer { .ifEmpty { return } printer.printCollection(typeParameters, prefix = "<", postfix = ">") { typeParameter -> codeStyle.getSeparatorBetweenAnnotationAndOwner(typeParameter).separated( + { annotationRenderer.renderAnnotations(typeParameter, printer) }, { modifiersRenderer.renderDeclarationModifiers(typeParameter, printer) }, { nameRenderer.renderName(typeParameter, printer) }, ) diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/classifiers/KtSingleTypeParameterSymbolRenderer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/classifiers/KtSingleTypeParameterSymbolRenderer.kt index 085618c80ea..55132625bef 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/classifiers/KtSingleTypeParameterSymbolRenderer.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/renderer/declarations/renderers/classifiers/KtSingleTypeParameterSymbolRenderer.kt @@ -26,6 +26,7 @@ public interface KtSingleTypeParameterSymbolRenderer { context(KtAnalysisSession, KtDeclarationRenderer) override fun renderSymbol(symbol: KtTypeParameterSymbol, printer: PrettyPrinter): Unit = printer { " ".separated( + { annotationRenderer.renderAnnotations(symbol, printer) }, { modifiersRenderer.renderDeclarationModifiers(symbol, printer) }, { nameRenderer.renderName(symbol, printer) }, ) @@ -36,6 +37,7 @@ public interface KtSingleTypeParameterSymbolRenderer { context(KtAnalysisSession, KtDeclarationRenderer) override fun renderSymbol(symbol: KtTypeParameterSymbol, printer: PrettyPrinter): Unit = printer { " ".separated( + { annotationRenderer.renderAnnotations(symbol, printer) }, { modifiersRenderer.renderDeclarationModifiers(symbol, printer) }, { nameRenderer.renderName(symbol, printer) }, { diff --git a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.kt b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.kt index e267b1ada73..76997e3ffab 100644 --- a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.kt +++ b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.kt @@ -1,4 +1,6 @@ -interface List { +@Target(AnnotationTarget.TYPE_PARAMETER) annotation class A + +interface List<@A out T : Any> { operator fun get(index: Int): T infix fun concat(other: List): List diff --git a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.rendered b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.rendered index 41a5e30ac10..4f9aa094721 100644 --- a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.rendered +++ b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/typeParameters.rendered @@ -1,4 +1,7 @@ -interface List { +@Target(allowedTargets = [kotlin.annotation.AnnotationTarget.TYPE_PARAMETER]) +annotation class A + +interface List<@A out T : Any> { infix fun concat(other: List): List operator fun get(index: Int): T diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.kt b/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.kt new file mode 100644 index 00000000000..ee7a3c98091 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.kt @@ -0,0 +1,5 @@ +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 + +@Target(AnnotationTarget.TYPE_PARAMETER) annotation class A + +fun <@A T> T.test() {} \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.pretty.txt new file mode 100644 index 00000000000..85da678f644 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.pretty.txt @@ -0,0 +1 @@ +@A T diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.txt b/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.txt new file mode 100644 index 00000000000..4fe55527fd4 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByReference/typeParameter.txt @@ -0,0 +1,13 @@ +KtTypeParameterSymbol: + annotationsList: [ + A() + psi: KtAnnotationEntry + ] + isReified: false + name: T + origin: SOURCE + typeParameters: [] + upperBounds: [] + variance: INVARIANT + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null