aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt10
-rw-r--r--plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt25
2 files changed, 31 insertions, 4 deletions
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
index 42ae1c27..ba4b4131 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
@@ -387,13 +387,14 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
) {
return when (p) {
is TypeParameter -> {
+ if (p.presentableName != null) {
+ text(p.presentableName!!)
+ operator(": ")
+ }
annotationsInline(p)
link(p.name, p.dri)
}
- is FunctionalTypeConstructor -> {
- annotationsInline(p)
- +funType(mainDRI.single(), mainSourcesetData, p)
- }
+ is FunctionalTypeConstructor -> +funType(mainDRI.single(), mainSourcesetData, p)
is GenericTypeConstructor ->
group(styles = emptySet()) {
val linkText = if (showFullyQualifiedName && p.dri.packageName != null) {
@@ -443,6 +444,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
text(type.presentableName!!)
operator(": ")
}
+ annotationsInline(type)
if (type.isSuspendable) keyword("suspend ")
if (type.isExtensionFunction) {
diff --git a/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt b/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt
index cd55a001..1e0a5404 100644
--- a/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt
+++ b/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt
@@ -108,6 +108,31 @@ class FunctionalTypeConstructorsSignatureTest : BaseAbstractTest() {
}
}
+ @Test
+ fun `kotlin syntactic sugar function with param name of generic and functional type`() {
+ val source = source("""
+ | @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE)
+ | @MustBeDocumented
+ | annotation class Fancy
+ |
+ | fun <T> f(): (param1: T, param2: @Fancy ()->Unit) -> String "
+ """.trimIndent())
+ val writerPlugin = TestOutputWriterPlugin()
+
+ testInline(
+ source, configuration, pluginOverrides = listOf(writerPlugin)
+ ) {
+ renderingStage = { _, _ ->
+ writerPlugin.writer.renderedContent("root/example/index.html").lastSignature().match(
+ "fun <", A("T"), "> ",
+ A("f"), "(): (param1:", A("T"),
+ ", param2: ", Span("@", A("Fancy")), " () -> ", A("Unit"),
+ ") -> ", A("String"), Span(),
+ ignoreSpanWithTokenStyle = true
+ )
+ }
+ }
+ }
@Disabled // Add coroutines on classpath and get proper import
@Test
fun `kotlin normal suspendable function`() {