aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilip Zybała <fzybala@virtuslab.com>2020-03-13 14:56:38 +0100
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-03-25 13:19:31 +0100
commit9110dbc70e42d10c56d1e080fdaeecd1ea13d84f (patch)
tree0ca30e4d8875c50560048ea1136d9aafc44837f8
parent3f8fef0f65fe96fb2a3b1dc2280a16b175fbb6c9 (diff)
downloaddokka-9110dbc70e42d10c56d1e080fdaeecd1ea13d84f.tar.gz
dokka-9110dbc70e42d10c56d1e080fdaeecd1ea13d84f.tar.bz2
dokka-9110dbc70e42d10c56d1e080fdaeecd1ea13d84f.zip
Fixed data class rendering. Added information about primary constructor and changed its rendering.
-rw-r--r--core/src/main/kotlin/model/aditionalExtras.kt6
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt17
-rw-r--r--plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt5
-rw-r--r--plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt8
4 files changed, 34 insertions, 2 deletions
diff --git a/core/src/main/kotlin/model/aditionalExtras.kt b/core/src/main/kotlin/model/aditionalExtras.kt
index f7d37111..75f5f69a 100644
--- a/core/src/main/kotlin/model/aditionalExtras.kt
+++ b/core/src/main/kotlin/model/aditionalExtras.kt
@@ -35,4 +35,10 @@ class Annotations(val content: List<Annotation>) : ExtraProperty<Documentable> {
override fun hashCode(): Int = dri.hashCode()
}
+}
+
+object PrimaryConstructorExtra: ExtraProperty<Documentable> {
+ object PrimaryConstructorExtraKey: ExtraProperty.Key<Documentable, PrimaryConstructorExtra>
+
+ override val key: ExtraProperty.Key<Documentable, *> = PrimaryConstructorExtraKey
} \ No newline at end of file
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
index 6eeedb88..31cd0eca 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
@@ -33,7 +33,11 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
private fun signature(c: DClasslike) = contentBuilder.contentFor(c, ContentKind.Symbol, setOf(TextStyle.Monospace)) {
platformText(c.visibility) { (it.takeIf { it !in ignoredVisibilities }?.name ?: "") + " " }
if (c is DClass) {
- text(c.modifier.name + " ")
+ if (c.extra[AdditionalModifiers.AdditionalKey]?.content?.contains(ExtraModifiers.DATA) == true) {
+ text("data ")
+ } else {
+ text(c.modifier.name + " ")
+ }
}
when (c) {
is DClass -> text("class ")
@@ -43,6 +47,17 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
is DAnnotation -> text("annotation class ")
}
link(c.name!!, c.dri)
+ if(c is Class){
+ val pConstructor = c.constructors.singleOrNull() { it.extra[PrimaryConstructorExtra.PrimaryConstructorExtraKey] != null }
+ if(pConstructor != null) {
+ list(pConstructor.parameters, "(", ")", ",", pConstructor.platformData.toSet()){
+ breakLine()
+ text(it.name ?: "", styles = mainStyles.plus(TextStyle.Bold))
+ text(": ")
+ signatureForProjection(it.type)
+ }
+ }
+ }
if (c is WithSupertypes) {
c.supertypes.map { (p, dris) ->
list(dris, prefix = " : ", platformData = setOf(p)) {
diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
index ae623ff2..bd21f9df 100644
--- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
@@ -488,6 +488,11 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv
ExtraModifiers.OVERRIDE.takeIf { DescriptorUtils.isOverride(this) }
).toProperty()
+ inline fun <reified D : Documentable> ConstructorDescriptor.additionalExtras(): PropertyContainer<D> =
+ if(this.isPrimary)
+ (this as FunctionDescriptor).additionalExtras<D>() + PrimaryConstructorExtra
+ else (this as FunctionDescriptor).additionalExtras()
+
fun ClassDescriptor.additionalExtras() = listOfNotNull(
ExtraModifiers.DYNAMIC.takeIf { isDynamic() },
ExtraModifiers.INLINE.takeIf { isInline },
diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt
index eba56625..464c7bf4 100644
--- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt
+++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt
@@ -105,7 +105,13 @@ open class DefaultPageCreator(
+contentForComments(c) { it !is Property }
if (c is WithConstructors) {
- block("Constructors", 2, ContentKind.Constructors, c.constructors, c.platformData.toSet()) {
+ block(
+ "Constructors",
+ 2,
+ ContentKind.Constructors,
+ c.constructors.filter { it.extra[PrimaryConstructorExtra.PrimaryConstructorExtraKey] == null },
+ c.platformData.toSet()
+ ) {
link(it.name, it.dri)
group {
+buildSignature(it)