diff options
| author | Andrzej Ratajczak <andrzej.ratajczak98@gmail.com> | 2020-08-18 13:18:22 +0200 |
|---|---|---|
| committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-08-20 15:36:07 +0200 |
| commit | 54df62709a37fc8f55bded26fd5db15f9eb0fd25 (patch) | |
| tree | 347eb9eff50fdcc2a260f00c42989e0c7e4d1aff /plugins/base/src/main/kotlin/signatures | |
| parent | a9be511b052755258bc92225c4f5a8977f174b89 (diff) | |
| download | dokka-54df62709a37fc8f55bded26fd5db15f9eb0fd25.tar.gz dokka-54df62709a37fc8f55bded26fd5db15f9eb0fd25.tar.bz2 dokka-54df62709a37fc8f55bded26fd5db15f9eb0fd25.zip | |
Hide unused generic type variables in constructor
Diffstat (limited to 'plugins/base/src/main/kotlin/signatures')
3 files changed, 24 insertions, 4 deletions
diff --git a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt index 689f6db5..0defc69e 100644 --- a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt +++ b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt @@ -6,6 +6,8 @@ import org.jetbrains.dokka.model.* import org.jetbrains.dokka.model.properties.WithExtraProperties import org.jetbrains.dokka.pages.* import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet +import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.driOrNull +import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.drisOfAllNestedBounds interface JvmSignatureUtils { @@ -133,6 +135,10 @@ interface JvmSignatureUtils { it.dri == DRI("kotlin", "Deprecated") || it.dri == DRI("java.lang", "Deprecated") } == true) setOf(TextStyle.Strikethrough) else emptySet() + + infix fun DFunction.uses(t: DTypeParameter): Boolean = + t.dri in (listOfNotNull(receiver?.type?.drisOfAllNestedBounds, receiver?.dri) + + parameters.flatMap { listOf(it.dri) + it.type.drisOfAllNestedBounds }) } sealed class AtStrategy diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt index 16598acd..823e1e8f 100644 --- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt +++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt @@ -15,7 +15,6 @@ import org.jetbrains.dokka.pages.ContentKind import org.jetbrains.dokka.pages.ContentNode import org.jetbrains.dokka.pages.TextStyle import org.jetbrains.dokka.utilities.DokkaLogger -import java.lang.IllegalStateException import kotlin.text.Typography.nbsp class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLogger) : SignatureProvider, @@ -240,7 +239,8 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog ) text(f.modifiers()[it]?.toSignatureString() ?: "") text("fun ") - list(f.generics, prefix = "<", suffix = "> ") { + val usedGenerics = f.generics.filter { f uses it } + list(usedGenerics, prefix = "<", suffix = "> ") { +buildSignature(it) } f.receiver?.also { @@ -317,7 +317,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog p: Projection, showFullyQualifiedName: Boolean = false ): Unit = when (p) { - is TypeParameter -> link(p.name, p.declarationDRI) + is TypeParameter -> link(p.name, p.dri) is TypeConstructor -> if (p.function) +funType(mainDRI.single(), mainSourcesetData, p) diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt index 193b41e1..e8107177 100644 --- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt +++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt @@ -35,7 +35,7 @@ object KotlinSignatureUtils : JvmSignatureUtils { val Bound.driOrNull: DRI? get() { return when (this) { - is TypeParameter -> this.declarationDRI + is TypeParameter -> this.dri is TypeConstructor -> this.dri is Nullable -> this.inner.driOrNull is PrimitiveJavaType -> this.dri @@ -45,4 +45,18 @@ object KotlinSignatureUtils : JvmSignatureUtils { is UnresolvedBound -> null } } + + val Projection.drisOfAllNestedBounds: List<DRI> get() = when (this) { + is TypeParameter -> listOf(dri) + is TypeConstructor -> listOf(dri) + projections.flatMap { it.drisOfAllNestedBounds } + is Nullable -> inner.drisOfAllNestedBounds + is PrimitiveJavaType -> listOf(dri) + is Void -> listOf(DriOfUnit) + is JavaObject -> listOf(DriOfAny) + is Dynamic -> emptyList() + is UnresolvedBound -> emptyList() + is Variance -> inner.drisOfAllNestedBounds + is Star -> emptyList() + } + } |
