aboutsummaryrefslogtreecommitdiff
path: root/src/Generation/KotlinSignatureGenerator.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/Generation/KotlinSignatureGenerator.kt')
-rw-r--r--src/Generation/KotlinSignatureGenerator.kt15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/Generation/KotlinSignatureGenerator.kt b/src/Generation/KotlinSignatureGenerator.kt
index 1fae62f0..e73dd8d9 100644
--- a/src/Generation/KotlinSignatureGenerator.kt
+++ b/src/Generation/KotlinSignatureGenerator.kt
@@ -29,7 +29,20 @@ class KotlinSignatureGenerator : SignatureGenerator {
}
override fun renderType(node: DocumentationNode): String {
- return node.name
+ val typeArguments = node.details(Kind.Type)
+ val renders = typeArguments.map { renderType(it) }
+
+ if (node.name == "Function${typeArguments.count() - 1}") {
+ // lambda
+ return "(${renders.take(renders.size - 1).join()})->${renders.last()}"
+ }
+ if (node.name == "ExtensionFunction${typeArguments.count() - 2}") {
+ // extension lambda
+ return "${renders.first()}.(${renders.drop(1).take(renders.size - 2).join()})->${renders.last()}"
+ }
+ if (typeArguments.none())
+ return node.name
+ return "${node.name}<${renders.join()}>"
}
override fun renderModifier(node: DocumentationNode): String {