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 3eead07efc5f369fc5397905df9faa0c9fbe808f
Author: Mikko Värri <v...@linuxbox.fi>
AuthorDate: Tue May 26 22:04:14 2020 +0300

    GROOVY-9573: groovydoc: show arrays properly (closes #1259)
---
 .../org/apache/groovy/antlr/GroovydocVisitor.java   |  8 +++++---
 .../groovy/tools/groovydoc/GroovyDocToolTest.java   | 21 +++++++++++++++++++++
 .../groovydoc/testfiles/GroovyInterface1.groovy     |  2 ++
 3 files changed, 28 insertions(+), 3 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 28893f5..d804f8d 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
@@ -293,9 +293,11 @@ public class GroovydocVisitor extends 
ClassCodeVisitorSupport {
     }
 
     private String makeType(ClassNode node) {
-        return node.getName().replace('.', '/').replace('$', '.')
-                + genericTypesAsString(node.getGenericsTypes())
-                ;
+        final ClassNode cn = node.isArray() ? node.getComponentType() : node;
+        return cn.getName().replace('.', '/').replace('$', '.')
+            + genericTypesAsString(cn.getGenericsTypes())
+            + (node.isArray() ? "[]" : "")
+            ;
     }
 
     @Override
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 5ee4709..4785d1a 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
@@ -1111,6 +1111,27 @@ public class GroovyDocToolTest extends GroovyTestCase {
         assertTrue("Property detail should be found", detail.find());
     }
 
+    public void testArray() throws Exception {
+        final String base = "org/codehaus/groovy/tools/groovydoc/testfiles";
+        htmlTool.add(Arrays.asList(
+            base + "/GroovyInterface1.groovy"
+        ));
+
+        final MockOutputTool output = new MockOutputTool();
+        htmlTool.renderToOutput(output, MOCK_DIR);
+
+        final String groovydoc = output.getText(MOCK_DIR + "/" + base + 
"/GroovyInterface1.html");
+
+        final String klass = Pattern.quote("<a 
href='https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html' 
title='Class'>Class</a>");
+        final String groovyInterface1 = Pattern.quote("<a 
href='../../../../../../org/codehaus/groovy/tools/groovydoc/testfiles/GroovyInterface1.html'
 title='GroovyInterface1'>GroovyInterface1</a>");
+
+        final Matcher klassArray = Pattern.compile(klass + "&lt;\\? extends " 
+ groovyInterface1 + "&gt;\\[]").matcher(groovydoc);
+        final Matcher primArray = 
Pattern.compile(Pattern.quote("byte[]")).matcher(groovydoc);
+
+        assertTrue("Class<? extends GroovyInterface1>[] is found instead of 
Class[]", klassArray.find());
+        assertTrue("byte[] is found instead of [B", primArray.find());
+    }
+
     public void testScript() throws Exception {
         List<String> srcList = new ArrayList<String>();
         
srcList.add("org/codehaus/groovy/tools/groovydoc/testfiles/Script.groovy");
diff --git 
a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyInterface1.groovy
 
b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyInterface1.groovy
index a2a9138..5cb8ede 100644
--- 
a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyInterface1.groovy
+++ 
b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/testfiles/GroovyInterface1.groovy
@@ -28,4 +28,6 @@ interface GroovyInterface1 {
      * @see JavaClassWithDiamond#link()
      */
     void link()
+
+    Class<? extends GroovyInterface1>[] parse(byte[] data)
 }

Reply via email to