diff options
-rw-r--r-- | src/Java/JavaDocumentationBuilder.kt | 5 | ||||
-rw-r--r-- | test/data/java/varargs.java | 5 | ||||
-rw-r--r-- | test/src/model/JavaTest.kt | 10 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/Java/JavaDocumentationBuilder.kt b/src/Java/JavaDocumentationBuilder.kt index c76c4c33..9d8c85a9 100644 --- a/src/Java/JavaDocumentationBuilder.kt +++ b/src/Java/JavaDocumentationBuilder.kt @@ -17,6 +17,7 @@ import com.intellij.psi.PsiArrayType import com.intellij.psi.PsiTypeParameter import com.intellij.psi.javadoc.PsiDocTag import com.intellij.psi.javadoc.PsiDocTagValue +import com.intellij.psi.PsiEllipsisType public class JavaDocumentationBuilder() { fun appendFile(file: PsiJavaFile, module: DocumentationModule) { @@ -107,6 +108,9 @@ public class JavaDocumentationBuilder() { fun PsiParameter.build(): DocumentationNode { val node = DocumentationNode(this, Kind.Parameter) node.appendType(getType()) + if (getType() is PsiEllipsisType) { + node.append(DocumentationNode("vararg", Content.Empty, Kind.Annotation), DocumentationReference.Kind.Annotation) + } return node } @@ -150,6 +154,7 @@ public class JavaDocumentationBuilder() { PsiType.VOID -> "Unit" is PsiPrimitiveType -> psiType.getCanonicalText().capitalize() is PsiClassType -> psiType.getClassName() + is PsiEllipsisType -> mapTypeName(psiType.getComponentType()) is PsiArrayType -> "Array<${mapTypeName(psiType.getComponentType())}>" else -> psiType.getCanonicalText() } diff --git a/test/data/java/varargs.java b/test/data/java/varargs.java new file mode 100644 index 00000000..a6af6a8d --- /dev/null +++ b/test/data/java/varargs.java @@ -0,0 +1,5 @@ +package test + +class Foo { + public void bar(String... x); +} diff --git a/test/src/model/JavaTest.kt b/test/src/model/JavaTest.kt index fe4fd322..e339f939 100644 --- a/test/src/model/JavaTest.kt +++ b/test/src/model/JavaTest.kt @@ -107,4 +107,14 @@ public class JavaTest { assertEquals("D", innerClass.name) } } + + Test fun varargs() { + verifyPackageMember("test/data/java/varargs.java") { cls -> + val fn = cls.members(DocumentationNode.Kind.Function).single() + val param = fn.detail(DocumentationNode.Kind.Parameter) + assertEquals("vararg", param.annotations.first().name) + val psiType = param.detail(DocumentationNode.Kind.Type) + assertEquals("String", psiType.name) + } + } } |