mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] k2: quick documentation: find annotations on backing field
- also fix links on annotation classes ^KTIJ-29181 fixed GitOrigin-RevId: 450d4f2af447578480bc0ec7ae46f24ce0a3f904
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6839d9f650
commit
156f86a322
+12
-3
@@ -140,7 +140,13 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
annotationListRenderer = object : KtAnnotationListRenderer {
|
||||
context(KtAnalysisSession, KtAnnotationRenderer)
|
||||
override fun renderAnnotations(owner: KtAnnotated, printer: PrettyPrinter) {
|
||||
val annotations = owner.annotations.filter { annotationFilter.filter(it, owner) }.ifEmpty { return }
|
||||
val backingFieldAnnotations = (owner as? KtPropertySymbol)?.backingFieldSymbol?.annotations
|
||||
val annotations = (backingFieldAnnotations?.let { owner.annotations + it } ?: owner.annotations).filter {
|
||||
annotationFilter.filter(
|
||||
it,
|
||||
owner
|
||||
)
|
||||
}.ifEmpty { return }
|
||||
printer.printCollection(
|
||||
annotations, separator = when (owner) {
|
||||
is KtValueParameterSymbol -> " "
|
||||
@@ -149,7 +155,10 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
}
|
||||
) { annotation ->
|
||||
append(highlight("@") { asAnnotationName })
|
||||
annotationUseSiteTargetRenderer.renderUseSiteTarget(annotation, owner, printer)
|
||||
if (backingFieldAnnotations != null && annotation in backingFieldAnnotations) {
|
||||
printer.append(highlight("field") { asKeyword })
|
||||
printer.append(':')
|
||||
}
|
||||
annotationsQualifiedNameRenderer.renderQualifier(annotation, owner, printer)
|
||||
annotationArgumentsRenderer.renderAnnotationArguments(annotation, owner, printer)
|
||||
}
|
||||
@@ -164,7 +173,7 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
val classId = annotation.classId
|
||||
if (classId != null) {
|
||||
val buffer = StringBuilder()
|
||||
DocumentationManagerUtil.createHyperlink(buffer, classId.asString(), classId.shortClassName.renderName(), true, false)
|
||||
DocumentationManagerUtil.createHyperlink(buffer, classId.asSingleFqName().asString(), classId.shortClassName.renderName(), true, false)
|
||||
printer.append(highlight(buffer.toString()) { asAnnotationName })
|
||||
} else {
|
||||
printer.append(highlight("ERROR_ANNOTATION") { asError })
|
||||
|
||||
+5
@@ -158,6 +158,11 @@ public class FirQuickDocTestGenerated extends AbstractFirQuickDocTest {
|
||||
runTest("../../idea/tests/testData/editor/quickDoc/JavaMethodUsedInKotlinInParen.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("JvmFieldAnnotation.kt")
|
||||
public void testJvmFieldAnnotation() throws Exception {
|
||||
runTest("../../idea/tests/testData/editor/quickDoc/JvmFieldAnnotation.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("KotlinClassUsedFromJava.java")
|
||||
public void testKotlinClassUsedFromJava() throws Exception {
|
||||
runTest("../../idea/tests/testData/editor/quickDoc/KotlinClassUsedFromJava.java");
|
||||
|
||||
+5
@@ -158,6 +158,11 @@ public class QuickDocProviderTestGenerated extends AbstractQuickDocProviderTest
|
||||
runTest("testData/editor/quickDoc/JavaMethodUsedInKotlinInParen.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("JvmFieldAnnotation.kt")
|
||||
public void testJvmFieldAnnotation() throws Exception {
|
||||
runTest("testData/editor/quickDoc/JvmFieldAnnotation.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("KotlinClassUsedFromJava.java")
|
||||
public void testKotlinClassUsedFromJava() throws Exception {
|
||||
runTest("testData/editor/quickDoc/KotlinClassUsedFromJava.java");
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
annotation class Anno
|
||||
class JvmFieldContainerContainer {
|
||||
companion object {
|
||||
@JvmField @Anno val jvmF<caret>ield = 0
|
||||
}
|
||||
}
|
||||
|
||||
//K2_INFO: <div class='definition'><pre><span style="color:#808000;">@</span><span style="color:#808000;"><a href="psi_element://Anno">Anno</a></span>
|
||||
//K2_INFO: <span style="color:#808000;">@</span><span style="color:#000080;font-weight:bold;">field</span>:<span style="color:#808000;"><a href="psi_element://kotlin.jvm.JvmField">JvmField</a></span>
|
||||
//K2_INFO: <span style="color:#000080;font-weight:bold;">public</span> <span style="color:#000080;font-weight:bold;">final</span> <span style="color:#000080;font-weight:bold;">val</span> <span style="color:#660e7a;font-weight:bold;">jvmField</span><span style="">: </span><span style="color:#000000;">Int</span></pre></div><div class='bottom'><icon src="/org/jetbrains/kotlin/idea/icons/classKotlin.svg"/> <a href="psi_element://JvmFieldContainerContainer.Companion"><code><span style="color:#000000;">JvmFieldContainerContainer.Companion</span></code></a><br/></div>
|
||||
|
||||
//INFO: <div class='definition'><pre><span style="color:#808000;">@</span><span style="color:#808000;"><a href="psi_element://Anno">Anno</a></span>
|
||||
//INFO: <span style="color:#808000;">@</span><span style="color:#000080;font-weight:bold;">field</span><span style="color:#808000;">:</span><span style="color:#808000;"><a href="psi_element://kotlin.jvm.JvmField">JvmField</a></span> <span style="color:#000080;font-weight:bold;">public</span> <span style="color:#000080;font-weight:bold;">final</span> <span style="color:#000080;font-weight:bold;">val</span> <span style="color:#660e7a;font-weight:bold;">jvmField</span><span style="">: </span><span style="color:#000000;">Int</span></pre></div><div class='bottom'><icon src="/org/jetbrains/kotlin/idea/icons/classKotlin.svg"/> <a href="psi_element://JvmFieldContainerContainer.Companion"><code><span style="color:#000000;">JvmFieldContainerContainer.Companion</span></code></a><br/></div>
|
||||
Reference in New Issue
Block a user