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:03 UTC
[groovy] 02/03: GROOVY-9573: groovydoc: show arrays properly
(closes #1259)
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 6d5b98173a7de859dd5104bd4a9cd0da08f856b3
Author: Mikko Värri <vm...@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 + "<\\? extends " + groovyInterface1 + ">\\[]").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)
}