Include inherited methods in asJava documentation am: 1dc7f7577e am: a0ce9a217a
Change-Id: I540d684c2ba22c74469527be0fa2d72e723303bc
diff --git a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
index cc9c2c2..00422c8 100644
--- a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
+++ b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
@@ -209,10 +209,20 @@
superTypes.filter { !ignoreSupertype(it) }.forEach {
node.appendType(it, NodeKind.Supertype)
val superClass = it.resolve()
- if (superClass != null) {
+ // parentNode is the actual DocumentationNode of this class's supertype
+ // It is necessary to create documentation links back to the superclass from inherited methods
+ val parentNode = refGraph.lookup(it.typeSignature())
+ if (superClass != null && parentNode != null) {
link(superClass, node, RefKind.Inheritor)
+ // Explicitly add the methods of the superclass as nodes to this class
+ node.appendChildren(superClass.methods, RefKind.InheritedMember) {
+ val child = build()
+ child.addReferenceTo(parentNode, RefKind.Owner)
+ return@appendChildren child
+ }
}
}
+
var methodsAndConstructors = methods
if (constructors.isEmpty()) {
diff --git a/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html b/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
index a66d0bf..24e5708 100644
--- a/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
+++ b/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
@@ -60,6 +60,43 @@
</tr>
</tbody>
</table>
+ <table class="responsive" id="inhmethods">
+ <tbody>
+ <tr>
+ <th colSpan="2">
+ <devsite-heading ds-is="heading" text="Inherited functions" id="inherited-functions" level="h3" toc="" class="">
+ <h3 is-upgraded="">Inherited functions</h3>
+ </devsite-heading>
+ </th>
+ </tr>
+ <tr class="api apilevel-">
+ <td colSpan="2">
+ <div class="expandable jd-inherited-apis"><span class="expand-control exw-expanded">From class <code><a href="Parent.html#">Parent</a></code></span>
+ <table class="responsive exw-expanded-content">
+ <tbody>
+ <tr class="api apilevel-" data-version-added="ApiLevel:">
+ <td><code><span class="identifier">void</span></code></td>
+ <td width="100%"><code><a href="Parent.html#baz()">baz</a>()</code>
+ <p>
+ <p>Do a superclass baz</p>
+ </p>
+ </td>
+ </tr>
+ <tr class="api apilevel-" data-version-added="ApiLevel:">
+ <td><code><span class="identifier">void</span></code></td>
+ <td width="100%"><code><a href="Parent.html#foo()">foo</a>()</code>
+ <p>
+ <p>Do a superclass foo</p>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
<h2>Public constructors</h2>
<a name="Child()"></a>
<div class="api apilevel-" data-version-added="">