diff options
author | Dmitry Jemerov <yole@jetbrains.com> | 2015-02-20 18:30:27 +0100 |
---|---|---|
committer | Dmitry Jemerov <yole@jetbrains.com> | 2015-02-20 18:30:27 +0100 |
commit | f26fccd1ed4cdb399c41f87541099d8cc9f85417 (patch) | |
tree | 21cc1fe1fd2831d23f2a06deea7c6b7f8929f13e /src/Java/JavaDocumentationBuilder.kt | |
parent | fdd2d9a25661b0faba687a168855138dc8ee30fa (diff) | |
download | dokka-f26fccd1ed4cdb399c41f87541099d8cc9f85417.tar.gz dokka-f26fccd1ed4cdb399c41f87541099d8cc9f85417.tar.bz2 dokka-f26fccd1ed4cdb399c41f87541099d8cc9f85417.zip |
inheritor links for Java classes
Diffstat (limited to 'src/Java/JavaDocumentationBuilder.kt')
-rw-r--r-- | src/Java/JavaDocumentationBuilder.kt | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/Java/JavaDocumentationBuilder.kt b/src/Java/JavaDocumentationBuilder.kt index a1724bb9..e1b91470 100644 --- a/src/Java/JavaDocumentationBuilder.kt +++ b/src/Java/JavaDocumentationBuilder.kt @@ -55,6 +55,16 @@ public class JavaDocumentationBuilder(private val options: DocumentationOptions, } } + fun link(element: PsiElement?, node: DocumentationNode, kind: DocumentationReference.Kind) { + val qualifiedName = getSignature(element) + if (qualifiedName != null) { + pendingReferences.add(PendingDocumentationReference( + {() -> signatureToNode[qualifiedName]}, + {() -> node}, + kind)) + } + } + private fun getSignature(element: PsiElement?) = when(element) { is PsiClass -> element.getQualifiedName() is PsiField -> element.getContainingClass().getQualifiedName() + "#" + element.getName() @@ -115,8 +125,13 @@ public class JavaDocumentationBuilder(private val options: DocumentationOptions, else -> DocumentationNode.Kind.Class } val node = DocumentationNode(this, kind) - getExtendsListTypes().filter { !ignoreSupertype(it) }.forEach { node.appendType(it, Kind.Supertype) } - getImplementsListTypes().forEach { node.appendType(it, Kind.Supertype) } + getSuperTypes().filter { !ignoreSupertype(it) }.forEach { + node.appendType(it, Kind.Supertype) + val superClass = it.resolve() + if (superClass != null) { + link(superClass, node, DocumentationReference.Kind.Inheritor) + } + } node.appendDetails(getTypeParameters()) { build() } node.appendMembers(getMethods()) { build() } node.appendMembers(getFields()) { build() } |