This is an automated email from the ASF dual-hosted git repository. paulk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 3f0e18775c2441c0ed5501e10615ddcb60c0c060 Author: Mikko Värri <v...@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";