diff options
author | Ilya Ryzhenkov <orangy@jetbrains.com> | 2014-07-11 22:29:47 +0400 |
---|---|---|
committer | Ilya Ryzhenkov <orangy@jetbrains.com> | 2014-07-11 22:29:47 +0400 |
commit | cec0fc9f3eaa5df8fc2654ce90d87b9be48b16c0 (patch) | |
tree | f019f9483bad3726661609f5e1b3c4a466cb0034 | |
parent | 09935fc1657670eaa8beb1b56718ed267404d7db (diff) | |
download | dokka-cec0fc9f3eaa5df8fc2654ce90d87b9be48b16c0.tar.gz dokka-cec0fc9f3eaa5df8fc2654ce90d87b9be48b16c0.tar.bz2 dokka-cec0fc9f3eaa5df8fc2654ce90d87b9be48b16c0.zip |
Support functions with receivers.
-rw-r--r-- | src/Model/DocumentationBuilder.kt | 6 | ||||
-rw-r--r-- | src/Model/DocumentationModel.kt | 1 | ||||
-rw-r--r-- | test/data/functions/functionWithReceiver.kt | 5 | ||||
-rw-r--r-- | test/src/model/FunctionTest.kt | 20 |
4 files changed, 32 insertions, 0 deletions
diff --git a/src/Model/DocumentationBuilder.kt b/src/Model/DocumentationBuilder.kt index 73f83ff9..464a5ab2 100644 --- a/src/Model/DocumentationBuilder.kt +++ b/src/Model/DocumentationBuilder.kt @@ -26,6 +26,12 @@ class DocumentationBuilderVisitor(val context: BindingContext) : DeclarationDesc return node } + override fun visitReceiverParameterDescriptor(descriptor: ReceiverParameterDescriptor?, data: DocumentationNode?): DocumentationNode? { + val node = DocumentationNode(descriptor!!.getName().asString(), "", DocumentationNodeKind.Receiver) + data?.addReferenceTo(node, DocumentationReferenceKind.Detail) + return node + } + override fun visitValueParameterDescriptor(descriptor: ValueParameterDescriptor?, data: DocumentationNode?): DocumentationNode? { val doc = context.getDocumentation(descriptor!!) val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Parameter) diff --git a/src/Model/DocumentationModel.kt b/src/Model/DocumentationModel.kt index 7f40acb2..61c3b28a 100644 --- a/src/Model/DocumentationModel.kt +++ b/src/Model/DocumentationModel.kt @@ -13,6 +13,7 @@ public enum class DocumentationNodeKind { Function Property Parameter + Receiver TypeParameter UpperBound LowerBound diff --git a/test/data/functions/functionWithReceiver.kt b/test/data/functions/functionWithReceiver.kt new file mode 100644 index 00000000..663c3e56 --- /dev/null +++ b/test/data/functions/functionWithReceiver.kt @@ -0,0 +1,5 @@ +/** + * Function with receiver + */ +fun String.fn() { +}
\ No newline at end of file diff --git a/test/src/model/FunctionTest.kt b/test/src/model/FunctionTest.kt index 20ae390c..217e97f4 100644 --- a/test/src/model/FunctionTest.kt +++ b/test/src/model/FunctionTest.kt @@ -18,6 +18,26 @@ public class FunctionTest { } } + Test fun functionWithReceiver() { + verifyModel("test/data/functions/functionWithReceiver.kt") { model -> + with(model.nodes.single().members.single()) { + assertEquals("fn", name) + assertEquals(DocumentationNodeKind.Function, kind) + assertEquals("Function with receiver", doc) + with(details.single()) { + assertEquals("<this>", name) + assertEquals(DocumentationNodeKind.Receiver, kind) + assertEquals("", doc) + assertTrue(details.none()) + assertTrue(members.none()) + assertTrue(links.none()) + } + assertTrue(members.none()) + assertTrue(links.none()) + } + } + } + Test fun genericFunction() { verifyModel("test/data/functions/genericFunction.kt") { model -> with(model.nodes.single().members.single()) { |