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:23:04 UTC

[groovy] 03/03: GROOVY-9576: groovydoc: hide enum $INIT static method (closes #1261)

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 0dda859d1f1a22b57ddd1ca9a73cc67302ee2ccb
Author: Mikko Värri <vm...@linuxbox.fi>
AuthorDate: Mon May 25 23:12:05 2020 +0300

    GROOVY-9576: groovydoc: hide enum $INIT static method (closes #1261)
    
    While the normal enum constructors can only be invoked from inside the
    enum class, this method can bypass that.  We probably shouldn't
    document it on every groovy enum.
---
 .../java/org/apache/groovy/antlr/GroovydocVisitor.java  |  2 ++
 .../groovy/tools/groovydoc/GroovyDocToolTest.java       | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)

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 d804f8d..39ed1f2 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
@@ -199,6 +199,8 @@ public class GroovydocVisitor extends ClassCodeVisitorSupport {
 
     @Override
     public void visitMethod(MethodNode node) {
+        if (currentClassDoc.isEnum() && "$INIT".equals(node.getName()))
+            return;
         SimpleGroovyMethodDoc meth = new SimpleGroovyMethodDoc(node.getName(), currentClassDoc);
         meth.setReturnType(new SimpleGroovyType(makeType(node.getReturnType())));
         setConstructorOrMethodCommon(node, meth);
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 4785d1a..4984f92 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
@@ -685,6 +685,23 @@ public class GroovyDocToolTest extends GroovyTestCase {
         assertEquals("There has to be a reference to class Enum", "Enum", m.group(3));
     }
 
+    public void testEnumInitNotDocumented() throws Exception {
+        final String base = "org/codehaus/groovy/tools/groovydoc/testfiles";
+        final String klass = "EnumWithDeprecatedConstants";
+        htmlTool.add(Arrays.asList(
+            base + "/"+ klass +".groovy"
+        ));
+
+        final MockOutputTool output = new MockOutputTool();
+        htmlTool.renderToOutput(output, MOCK_DIR);
+
+        final String groovydoc = output.getText(MOCK_DIR + "/" + base + "/"+ klass +".html");
+
+        final Matcher ctor = Pattern.compile(Pattern.quote("$INIT")).matcher(groovydoc);
+
+        assertFalse("enum $INIT static method should not be documented", ctor.find());
+    }
+
     public void testClassAliasing() throws Exception {
 
         List<String> srcList = new ArrayList<String>();