aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/signatures
diff options
context:
space:
mode:
authorAndrzej Ratajczak <andrzej.ratajczak98@gmail.com>2020-08-18 13:18:22 +0200
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-08-20 15:36:07 +0200
commit54df62709a37fc8f55bded26fd5db15f9eb0fd25 (patch)
tree347eb9eff50fdcc2a260f00c42989e0c7e4d1aff /plugins/base/src/main/kotlin/signatures
parenta9be511b052755258bc92225c4f5a8977f174b89 (diff)
downloaddokka-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')
-rw-r--r--plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt6
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt6
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt16
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()
+ }
+
}