diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ClassTypeParameterAnnotation.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ClassTypeParameterAnnotation.lib.java new file mode 100644 index 00000000000..763747c5ac0 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ClassTypeParameterAnnotation.lib.java @@ -0,0 +1,3 @@ +public final class C /* one.C*/<@one.Anno() T> { + public C();// .ctor() +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/InterfaceTypeParameterAnnotation.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/InterfaceTypeParameterAnnotation.lib.java new file mode 100644 index 00000000000..d6973b1d8fd --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/InterfaceTypeParameterAnnotation.lib.java @@ -0,0 +1,2 @@ +public abstract interface C /* one.C*/<@one.Anno() T> { +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/MethodTypeParameterAnnotation.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/MethodTypeParameterAnnotation.lib.java new file mode 100644 index 00000000000..f83117e72f4 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/MethodTypeParameterAnnotation.lib.java @@ -0,0 +1,5 @@ +public final class C /* one.C*/ { + public C();// .ctor() + + public final <@one.Anno() T> void foo(T);// <@one.Anno() T> foo(T) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/PropertyTypeParameterAnnotation.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/PropertyTypeParameterAnnotation.lib.java index 2c72138b6e3..552f69fda8e 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/PropertyTypeParameterAnnotation.lib.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/PropertyTypeParameterAnnotation.lib.java @@ -1,5 +1,5 @@ public final class C /* one.C*/ { public C();// .ctor() - public final int getFoo(T);// getFoo(T) + public final <@one.Anno() T> int getFoo(T);// <@one.Anno() T> getFoo(T) } diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/FunctionTypeParameterAnnotation.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/FunctionTypeParameterAnnotation.lib.java new file mode 100644 index 00000000000..594681b335b --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/FunctionTypeParameterAnnotation.lib.java @@ -0,0 +1,3 @@ +public final class FunctionTypeParameterAnnotationKt /* one.FunctionTypeParameterAnnotationKt*/ { + public static final <@one.Anno() T> void foo(T);// <@one.Anno() T> foo(T) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/PropertyTypeParameterAnnotation.lib.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/PropertyTypeParameterAnnotation.lib.java index a4736c1b2b9..094969aa087 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/PropertyTypeParameterAnnotation.lib.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/facades/PropertyTypeParameterAnnotation.lib.java @@ -1,3 +1,3 @@ public final class PropertyTypeParameterAnnotationKt /* one.PropertyTypeParameterAnnotationKt*/ { - public static final int getFoo(T);// getFoo(T) + public static final <@one.Anno() T> int getFoo(T);// <@one.Anno() T> getFoo(T) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/PsiClassRenderer.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/PsiClassRenderer.kt index ba7cbe77088..d4ff86014e4 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/PsiClassRenderer.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/PsiClassRenderer.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -146,11 +146,14 @@ class PsiClassRenderer private constructor( private fun Array.renderTypeParams() = if (isEmpty()) "" else "<" + joinToString { - val bounds = - if (it.extendsListTypes.isNotEmpty()) - " extends " + it.extendsListTypes.joinToString(" & ", transform = { it.renderType() }) - else "" - it.name!! + bounds + val extendsListTypes = it.extendsListTypes + val bounds = if (extendsListTypes.isNotEmpty()) { + " extends " + extendsListTypes.joinToString(" & ", transform = { it.renderType() }) + } else { + "" + } + + it.renderModifiers() + it.name!! + bounds } + "> " private fun KtLightPsiLiteral.renderKtLightPsiLiteral(): String { @@ -294,7 +297,7 @@ class PsiClassRenderer private constructor( val renderedAnnotation = annotation.renderAnnotation() if (renderedAnnotation.isNotEmpty()) { annotationsBuffer.add( - renderedAnnotation + (if (this is PsiParameter) " " else "\n") + renderedAnnotation + (if (this is PsiParameter || this is PsiTypeParameter) " " else "\n") ) } }