You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/05/22 04:21:52 UTC

[groovy] branch GROOVY_3_0_X updated: GROOVY-9567: groovydoc: show abstract modifier on abstract methods (closes #1250)

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new 3de038b  GROOVY-9567: groovydoc: show abstract modifier on abstract methods (closes #1250)
3de038b is described below

commit 3de038b60cb8a32ce38e897d675c060b355f1ff5
Author: Mikko Värri <vm...@linuxbox.fi>
AuthorDate: Thu May 21 23:26:30 2020 +0300

    GROOVY-9567: groovydoc: show abstract modifier on abstract methods (closes #1250)
---
 .../tools/groovydoc/SimpleGroovyMethodDoc.java     |  4 ----
 .../gstringTemplates/classLevel/classDocName.html  |  2 +-
 .../groovy/tools/groovydoc/GroovyDocToolTest.java  | 22 ++++++++++++++++++++++
 .../GroovyClassWithMultipleInterfaces.groovy       |  1 +
 4 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyMethodDoc.java b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyMethodDoc.java
index 19db0c7..8a572ac 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyMethodDoc.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyMethodDoc.java
@@ -40,10 +40,6 @@ public class SimpleGroovyMethodDoc extends SimpleGroovyExecutableMemberDoc imple
         this.returnType = returnType;
     }
 
-    public boolean isAbstract() {/*todo*/
-        return false;
-    }
-
     public GroovyClassDoc overriddenClass() {/*todo*/
         return null;
     }
diff --git a/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/classLevel/classDocName.html b/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/classLevel/classDocName.html
index 277799d..011ba52 100644
--- a/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/classLevel/classDocName.html
+++ b/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/classLevel/classDocName.html
@@ -523,7 +523,7 @@ if (classDoc.isInterface() && classDoc.interfaces()) {
                         <% visibleMethods.eachWithIndex { method, i -> %>
                         <tr class="${i%2==0?'altColor':'rowColor'}">
                             <td class="colFirst"><code>${org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc.encodeAngleBrackets(method.typeParameters()) ?: ''}</code></td>
-                            <td class="colLast"><code>${modifiersBrief(method)}${linkable(method.returnType())}</code></td>
+                            <td class="colLast"><code>${modifiers(method)}${linkable(method.returnType())}</code></td>
                             <td class="colLast"><code><strong><a href="#${nameFromParams(method)}">${method.name()}</a></strong>(${paramsOf(method, true)})</code><br>${method.firstSentenceCommentText()}</td>
                         </tr>
                         <% } %>
diff --git a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
index ed5b64c..6c1ebe8 100644
--- a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
+++ b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
@@ -983,6 +983,28 @@ public class GroovyDocToolTest extends GroovyTestCase {
         )).matcher(javadoc).find());
     }
 
+    public void testAbstractMethods() throws Exception {
+        final String base = "org/codehaus/groovy/tools/groovydoc/testfiles";
+        htmlTool.add(Arrays.asList(
+            base + "/GroovyClassWithMultipleInterfaces.groovy",
+            base + "/JavaClassWithDiamond.java"
+        ));
+
+        final MockOutputTool output = new MockOutputTool();
+        htmlTool.renderToOutput(output, MOCK_DIR);
+
+        final String groovydoc = output.getText(MOCK_DIR + "/" + base + "/GroovyClassWithMultipleInterfaces.html");
+        final String javadoc = StringGroovyMethods.normalize(output.getText(MOCK_DIR + "/" + base + "/JavaClassWithDiamond.html"));
+
+        final Pattern methodSummary = Pattern.compile("<code>(public&nbsp;)?abstract&nbsp;void</code>");
+        final Pattern methodDetails = Pattern.compile("<h4>(public&nbsp;)?abstract&nbsp;void <strong>link</strong>");
+
+        assertTrue("The Groovy method summary should contain 'abstract'", methodSummary.matcher(groovydoc).find());
+        assertTrue("The Java method summary should contain 'abstract'", methodSummary.matcher(javadoc).find());
+        assertTrue("The Groovy method details should contain 'abstract'", methodDetails.matcher(groovydoc).find());
+        assertTrue("The Java method details should contain 'abstract'", methodDetails.matcher(javadoc).find());
+    }
+
     public void testLinksToSamePackage() throws Exception {
         final String base = "org/codehaus/groovy/tools/groovydoc/testfiles";
         htmlTool.add(Arrays.asList(
diff --git a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyClassWithMultipleInterfaces.groovy b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyClassWithMultipleInterfaces.groovy
index 41946fd..b3de975 100644
--- a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyClassWithMultipleInterfaces.groovy
+++ b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyClassWithMultipleInterfaces.groovy
@@ -20,4 +20,5 @@ package org.codehaus.groovy.tools.groovydoc.testfiles
 
 abstract class GroovyClassWithMultipleInterfaces implements GroovyInterface1, JavaInterface1, Runnable {
     private GroovyClassWithMultipleInterfaces() {}
+    abstract void link()
 }