aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/signatures
diff options
context:
space:
mode:
authorFilip Zybała <fzybala@virtuslab.com>2020-06-10 13:53:10 +0200
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-06-18 13:47:02 +0200
commitad9f1289015627997b822f99579750805ea2f553 (patch)
treeb042cb5da63e8f0f8c73d6088ee22dfec292a1e9 /plugins/base/src/main/kotlin/signatures
parent295c8f1ad4d51e124efe4bbeb4351fa4db6b40d1 (diff)
downloaddokka-ad9f1289015627997b822f99579750805ea2f553.tar.gz
dokka-ad9f1289015627997b822f99579750805ea2f553.tar.bz2
dokka-ad9f1289015627997b822f99579750805ea2f553.zip
Fixed sources platform tags; tailrec and external modifiers; sorting.
Diffstat (limited to 'plugins/base/src/main/kotlin/signatures')
-rw-r--r--plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt2
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt55
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt1
3 files changed, 48 insertions, 10 deletions
diff --git a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
index f8141110..a7fc7570 100644
--- a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
+++ b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
@@ -13,7 +13,7 @@ interface JvmSignatureUtils {
fun <T : Documentable> WithExtraProperties<T>.modifiers(): SourceSetDependent<Set<ExtraModifiers>>
- fun Set<ExtraModifiers>.toSignatureString(): String =
+ fun Collection<ExtraModifiers>.toSignatureString(): String =
joinToString("") { it.name.toLowerCase() + " " }
fun <T : Documentable> WithExtraProperties<T>.annotations(): SourceSetDependent<List<Annotations.Annotation>> =
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
index ab3056ec..faca95ee 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
@@ -1,5 +1,6 @@
package org.jetbrains.dokka.base.signatures
+import org.jetbrains.dokka.Platform
import org.jetbrains.dokka.base.transformers.pages.comments.CommentsToContentConverter
import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder
import org.jetbrains.dokka.links.*
@@ -19,6 +20,13 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
private val ignoredVisibilities = setOf(JavaVisibility.Public, KotlinVisibility.Public)
private val ignoredModifiers = setOf(JavaModifier.Final, KotlinModifier.Final)
+ private val ignoredExtraModifiers = setOf(
+ ExtraModifiers.KotlinOnlyModifiers.TailRec,
+ ExtraModifiers.KotlinOnlyModifiers.External
+ )
+ private val platformSpecificModifiers : Map<ExtraModifiers, Set<Platform>> = mapOf(
+ ExtraModifiers.KotlinOnlyModifiers.External to setOf(Platform.js)
+ )
override fun signature(documentable: Documentable): ContentNode = when (documentable) {
is DFunction -> functionSignature(documentable)
@@ -32,6 +40,20 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
)
}
+ private fun <T> PageContentBuilder.DocumentableContentBuilder.processExtraModifiers (t: T)
+ where T: Documentable, T: WithExtraProperties<T> {
+ sourceSetDependentText(
+ t.modifiers()
+ .mapValues { entry ->
+ entry.value.filter {
+ it !in ignoredExtraModifiers || entry.key.platform in (platformSpecificModifiers[it] ?: emptySet())
+ }
+ }
+ ) {
+ it.toSignatureString()
+ }
+ }
+
private fun signature(e: DEnumEntry) =
contentBuilder.contentFor(
e,
@@ -96,11 +118,26 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
}
}
when (c) {
- is DClass -> text("class ")
- is DInterface -> text("interface ")
- is DEnum -> text("enum ")
- is DObject -> text("object ")
- is DAnnotation -> text("annotation class ")
+ is DClass -> {
+ processExtraModifiers(c)
+ text("class ")
+ }
+ is DInterface -> {
+ processExtraModifiers(c)
+ text("interface ")
+ }
+ is DEnum -> {
+ processExtraModifiers(c)
+ text("enum ")
+ }
+ is DObject -> {
+ processExtraModifiers(c)
+ text("object ")
+ }
+ is DAnnotation -> {
+ processExtraModifiers(c)
+ text("annotation class ")
+ }
}
link(c.name!!, c.dri)
if (c is WithGenerics) {
@@ -146,7 +183,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
if (it is JavaModifier.Empty) KotlinModifier.Open else it
}?.name?.let { "$it " } ?: ""
}
- sourceSetDependentText(p.modifiers()) { it.toSignatureString() }
+ processExtraModifiers(p)
p.setter?.let { text("var ") } ?: text("val ")
list(p.generics, prefix = "<", suffix = "> ") {
+buildSignature(it)
@@ -169,7 +206,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
if (it is JavaModifier.Empty) KotlinModifier.Open else it
}?.name?.let { "$it " } ?: ""
}
- sourceSetDependentText(f.modifiers()) { it.toSignatureString() }
+ processExtraModifiers(f)
text("fun ")
list(f.generics, prefix = "<", suffix = "> ") {
+buildSignature(it)
@@ -182,7 +219,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
text("(")
list(f.parameters) {
annotationsInline(it)
- sourceSetDependentText(it.modifiers()) { it.toSignatureString() }
+ processExtraModifiers(it)
text(it.name!!)
text(": ")
signatureForProjection(it.type)
@@ -211,7 +248,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
sourceSets = platforms.toSet()
) {
sourceSetDependentText(t.visibility) { it.takeIf { it !in ignoredVisibilities }?.name?.let { "$it " } ?: "" }
- sourceSetDependentText(t.modifiers()) { it.toSignatureString() }
+ processExtraModifiers(t)
text("typealias ")
signatureForProjection(t.type)
text(" = ")
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt
index 1f323473..c8ff3fac 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt
@@ -12,6 +12,7 @@ object KotlinSignatureUtils : JvmSignatureUtils {
private val listBrackets = Pair('[', ']')
private val classExtension = "::class"
+
override fun PageContentBuilder.DocumentableContentBuilder.annotationsBlock(d: Documentable) =
annotationsBlockWithIgnored(d, emptySet(), strategy, listBrackets, classExtension)