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 + "<\\? 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) }