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="">