aboutsummaryrefslogtreecommitdiff
path: root/src/Java/JavaDocumentationBuilder.kt
diff options
context:
space:
mode:
authorDmitry Jemerov <yole@jetbrains.com>2015-02-20 18:30:27 +0100
committerDmitry Jemerov <yole@jetbrains.com>2015-02-20 18:30:27 +0100
commitf26fccd1ed4cdb399c41f87541099d8cc9f85417 (patch)
tree21cc1fe1fd2831d23f2a06deea7c6b7f8929f13e /src/Java/JavaDocumentationBuilder.kt
parentfdd2d9a25661b0faba687a168855138dc8ee30fa (diff)
downloaddokka-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.kt19
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() }