diff options
| author | Filip Zybała <fzybala@virtuslab.com> | 2020-06-10 13:53:10 +0200 |
|---|---|---|
| committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-06-18 13:47:02 +0200 |
| commit | ad9f1289015627997b822f99579750805ea2f553 (patch) | |
| tree | b042cb5da63e8f0f8c73d6088ee22dfec292a1e9 /plugins/base/src/main/kotlin/signatures | |
| parent | 295c8f1ad4d51e124efe4bbeb4351fa4db6b40d1 (diff) | |
| download | dokka-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')
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) |
