From df130be766b07ab445542c5c1e0610b2bb957cad Mon Sep 17 00:00:00 2001 From: vmishenev Date: Thu, 28 Apr 2022 19:20:39 +0300 Subject: [PATCH 1/2] Fix arg name inside functional type --- .../signatures/KotlinSignatureProvider.kt | 10 +++++--- ...FunctionalTypeConstructorsSignatureTest.kt | 25 +++++++++++++++++++ 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 42ae1c27d5..ba4b41313b 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 cd55a001a4..08f2016646 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 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().firstSignature().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`() { From c3156e09730f61a3ae6c05232db76843d7773015 Mon Sep 17 00:00:00 2001 From: vmishenev Date: Thu, 28 Apr 2022 23:04:54 +0300 Subject: [PATCH 2/2] Fix arg name inside functional type --- .../signatures/FunctionalTypeConstructorsSignatureTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt b/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt index 08f2016646..1e0a540443 100644 --- a/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/FunctionalTypeConstructorsSignatureTest.kt @@ -123,7 +123,7 @@ class FunctionalTypeConstructorsSignatureTest : BaseAbstractTest() { source, configuration, pluginOverrides = listOf(writerPlugin) ) { renderingStage = { _, _ -> - writerPlugin.writer.renderedContent("root/example/index.html").lastSignature().firstSignature().match( + writerPlugin.writer.renderedContent("root/example/index.html").lastSignature().match( "fun <", A("T"), "> ", A("f"), "(): (param1:", A("T"), ", param2: ", Span("@", A("Fancy")), " () -> ", A("Unit"),