[Analysis API] Render annotations of type parameters

This commit is contained in:
aleksandrina-streltsova
2023-03-01 13:12:00 +02:00
committed by Space Team
parent 0c2e3d2d48
commit 1a10e0fdb6
10 changed files with 48 additions and 2 deletions
@@ -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 {
@@ -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 {
@@ -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 {
@@ -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) },
)
@@ -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) },
{
@@ -1,4 +1,6 @@
interface List<out T : Any> {
@Target(AnnotationTarget.TYPE_PARAMETER) annotation class A
interface List<@A out T : Any> {
operator fun get(index: Int): T
infix fun concat(other: List<T>): List<T>
@@ -1,4 +1,7 @@
interface List<out T : Any> {
@Target(allowedTargets = [kotlin.annotation.AnnotationTarget.TYPE_PARAMETER])
annotation class A
interface List<@A out T : Any> {
infix fun concat(other: List<T>): List<T>
operator fun get(index: Int): T
@@ -0,0 +1,5 @@
// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1
@Target(AnnotationTarget.TYPE_PARAMETER) annotation class A
fun <@A T> <caret>T.test() {}
@@ -0,0 +1 @@
@A T
@@ -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