Skip to content

Commit

Permalink
Fix arg name inside functional type (#2478)
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev authored Apr 29, 2022
1 parent 4451b8e commit 84aacad
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -443,6 +444,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
text(type.presentableName!!)
operator(": ")
}
annotationsInline(type)
if (type.isSuspendable) keyword("suspend ")

if (type.isExtensionFunction) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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`() {
Expand Down

0 comments on commit 84aacad

Please sign in to comment.