From d197f0544b4cd1ade870ebde0d6a6a43a94daf9a Mon Sep 17 00:00:00 2001 From: vmishenev Date: Mon, 9 Aug 2021 12:51:59 +0300 Subject: Property annotation for getter and setter (#2049) --- .../main/kotlin/signatures/JvmSignatureUtils.kt | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'plugins/base/src/main/kotlin') diff --git a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt index a2624da0..d17fa276 100644 --- a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt +++ b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt @@ -8,6 +8,7 @@ import org.jetbrains.dokka.pages.* import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.drisOfAllNestedBounds import org.jetbrains.dokka.model.AnnotationTarget +import org.jetbrains.dokka.model.doc.DocumentationNode interface JvmSignatureUtils { @@ -23,6 +24,19 @@ interface JvmSignatureUtils { fun WithExtraProperties.annotations(): SourceSetDependent> = extra[Annotations]?.directAnnotations ?: emptyMap() + @Suppress("UNCHECKED_CAST") + operator fun > SourceSetDependent.plus(other: SourceSetDependent): SourceSetDependent = + LinkedHashMap(this).apply { + for ((k, v) in other) { + put(k, get(k).let { if (it != null) (it + v) as T else v }) + } + } + + fun DProperty.annotations(): SourceSetDependent> = + (extra[Annotations]?.directAnnotations ?: emptyMap()) + + (getter?.annotations() ?: emptyMap()).mapValues { it.value.map { it.copy( scope = Annotations.AnnotationScope.GETTER) } } + + (setter?.annotations() ?: emptyMap()).mapValues { it.value.map { it.copy( scope = Annotations.AnnotationScope.SETTER) } } + private fun PageContentBuilder.DocumentableContentBuilder.annotations( d: AnnotationTarget, ignored: Set, @@ -65,7 +79,13 @@ interface JvmSignatureUtils { ) { when (renderAtStrategy) { - is All, is OnlyOnce -> text("@") + is All, is OnlyOnce -> { + text("@") + when(a.scope) { + Annotations.AnnotationScope.GETTER -> text("get:") + Annotations.AnnotationScope.SETTER -> text("set:") + } + } is Never -> Unit } link(a.dri.classNames!!, a.dri) -- cgit