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/28 10:53:43 UTC

[groovy] 02/04: GROOVY-9571: groovydoc: add default ctor only for (abstract) classes (closes #1257)

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

commit d1743703c2edbf26b8e4c6da38841abfe9a036ff
Author: Mikko Värri <vm...@linuxbox.fi>
AuthorDate: Mon May 25 20:39:09 2020 +0300

    GROOVY-9571: groovydoc: add default ctor only for (abstract) classes (closes #1257)
---
 .../java/org/apache/groovy/antlr/GroovydocVisitor.java  |  4 ++--
 .../groovy/tools/groovydoc/GroovyDocToolTest.java       | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/subprojects/groovy-groovydoc/src/main/java/org/apache/groovy/antlr/GroovydocVisitor.java b/subprojects/groovy-groovydoc/src/main/java/org/apache/groovy/antlr/GroovydocVisitor.java
index 1d7c940..28893f5 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/apache/groovy/antlr/GroovydocVisitor.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/apache/groovy/antlr/GroovydocVisitor.java
@@ -139,8 +139,8 @@ public class GroovydocVisitor extends ClassCodeVisitorSupport {
         classDocs.put(currentClassDoc.getFullPathName(), currentClassDoc);
         super.visitClass(node);
         SimpleGroovyClassDoc parent = currentClassDoc;
-        if (currentClassDoc.constructors().length == 0) {
-            // add default no-arg constructor
+        if (currentClassDoc.isClass() && currentClassDoc.constructors().length == 0) {
+            // add default no-arg constructor, but not for interfaces, traits, enums, or annotation definitions
             SimpleGroovyConstructorDoc cons = new SimpleGroovyConstructorDoc(name, currentClassDoc);
             cons.setPublic(true);
             currentClassDoc.add(cons);
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 a252360..5ee4709 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
@@ -157,6 +157,23 @@ public class GroovyDocToolTest extends GroovyTestCase {
         assertTrue(constructorDoc.indexOf("<parameter type=\"java.lang.ClassLoader\" name=\"parent\" />") > 0);
     }
 
+    public void testInterfaceConstructor() throws Exception {
+        final String base = "org/codehaus/groovy/tools/groovydoc/testfiles";
+        final String groovyInterface = "GroovyInterface1";
+        htmlTool.add(Arrays.asList(
+            base + "/"+ groovyInterface +".groovy"
+        ));
+
+        final MockOutputTool output = new MockOutputTool();
+        htmlTool.renderToOutput(output, MOCK_DIR);
+
+        final String groovydoc = output.getText(MOCK_DIR + "/" + base + "/"+ groovyInterface +".html");
+
+        final Matcher ctor = Pattern.compile(Pattern.quote("GroovyInterface1()")).matcher(groovydoc);
+
+        assertFalse("The Groovy interface should not have default constructor", ctor.find());
+    }
+
     public void testClassComment() throws Exception {
         List<String> srcList = new ArrayList<String>();
         String base = "org/codehaus/groovy/tools/groovydoc/testfiles/Builder";