From b511259a37aa9feee06a3ca92b7967552aa34104 Mon Sep 17 00:00:00 2001 From: Ilya Ryzhenkov Date: Fri, 11 Jul 2014 22:09:41 +0400 Subject: Support type parameters for functions and classes. --- src/Model/DocumentationBuilder.kt | 7 +++++++ test/data/classes/genericClass.kt | 3 +++ test/data/functions/genericFunction.kt | 5 +++++ test/playground.kt | 1 + test/src/model/ClassTest.kt | 22 ++++++++++++++++++++++ test/src/model/FunctionTest.kt | 22 ++++++++++++++++++++++ 6 files changed, 60 insertions(+) create mode 100644 test/data/classes/genericClass.kt create mode 100644 test/data/functions/genericFunction.kt diff --git a/src/Model/DocumentationBuilder.kt b/src/Model/DocumentationBuilder.kt index e28d437f..2afe366b 100644 --- a/src/Model/DocumentationBuilder.kt +++ b/src/Model/DocumentationBuilder.kt @@ -51,6 +51,13 @@ class DocumentationBuilderVisitor(val context: BindingContext) : DeclarationDesc return node } + override fun visitTypeParameterDescriptor(descriptor: TypeParameterDescriptor?, data: DocumentationNode?): DocumentationNode? { + val doc = context.getDocumentation(descriptor!!) + val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.TypeParameter) + data?.addReferenceTo(node, DocumentationReferenceKind.Detail) + return node + } + override fun visitPropertyDescriptor(descriptor: PropertyDescriptor?, data: DocumentationNode?): DocumentationNode? { val doc = context.getDocumentation(descriptor!!) val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Property) diff --git a/test/data/classes/genericClass.kt b/test/data/classes/genericClass.kt new file mode 100644 index 00000000..db20ff7e --- /dev/null +++ b/test/data/classes/genericClass.kt @@ -0,0 +1,3 @@ +class Klass { + +} \ No newline at end of file diff --git a/test/data/functions/genericFunction.kt b/test/data/functions/genericFunction.kt new file mode 100644 index 00000000..6e07d04b --- /dev/null +++ b/test/data/functions/genericFunction.kt @@ -0,0 +1,5 @@ + +/** + * generic function + */ +fun generic() {} \ No newline at end of file diff --git a/test/playground.kt b/test/playground.kt index 455e56ff..38fd4a3f 100644 --- a/test/playground.kt +++ b/test/playground.kt @@ -40,6 +40,7 @@ class ClassWithConstructor(val name: String) data class Person(/** Doc at parameter */ val name: String, val age: Int) {} object Object { + throws(javaClass()) fun objectFunction() { } diff --git a/test/src/model/ClassTest.kt b/test/src/model/ClassTest.kt index 708a1798..82d24f16 100644 --- a/test/src/model/ClassTest.kt +++ b/test/src/model/ClassTest.kt @@ -18,6 +18,28 @@ public class ClassTest { } } + Test fun genericClass() { + verifyModel("test/data/classes/genericClass.kt") { model -> + with(model.nodes.single().members.single()) { + assertEquals(DocumentationNodeKind.Class, kind) + assertEquals("Klass", name) + assertEquals("", doc) + + with(details.single()) { + assertEquals("T", name) + assertEquals(DocumentationNodeKind.TypeParameter, kind) + assertEquals("", doc) + assertTrue(details.none()) + assertTrue(members.none()) + assertTrue(links.none()) + } + + assertEquals("", members.single().name) + assertTrue(links.none()) + } + } + } + Test fun emptyObject() { verifyModel("test/data/classes/emptyObject.kt") { model -> with(model.nodes.single().members.single()) { diff --git a/test/src/model/FunctionTest.kt b/test/src/model/FunctionTest.kt index 528166e6..c2a444b9 100644 --- a/test/src/model/FunctionTest.kt +++ b/test/src/model/FunctionTest.kt @@ -18,6 +18,28 @@ public class FunctionTest { } } + Test fun genericFunction() { + verifyModel("test/data/functions/genericFunction.kt") { model -> + with(model.nodes.single().members.single()) { + assertEquals("generic", name) + assertEquals(DocumentationNodeKind.Function, kind) + assertEquals("generic function", doc) + + with(details.single()) { + assertEquals("T", name) + assertEquals(DocumentationNodeKind.TypeParameter, kind) + assertEquals("", doc) + assertTrue(details.none()) + assertTrue(members.none()) + assertTrue(links.none()) + } + + assertTrue(members.none()) + assertTrue(links.none()) + } + } + } + Test fun functionWithParams() { verifyModel("test/data/functions/functionWithParams.kt") { model -> with(model.nodes.single().members.single()) { -- cgit