aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin
diff options
context:
space:
mode:
authorDmitry Jemerov <yole@jetbrains.com>2016-04-27 20:44:36 +0200
committerDmitry Jemerov <yole@jetbrains.com>2016-04-27 20:44:36 +0200
commite33ea05d10a35adfe6835dce291080d9843e6b71 (patch)
tree8a831b0c26d94b86599f41e844f7b3ec57236611 /core/src/main/kotlin
parent6ce0bdf71e76a14e6aedd44cb3987185816fc642 (diff)
downloaddokka-e33ea05d10a35adfe6835dce291080d9843e6b71.tar.gz
dokka-e33ea05d10a35adfe6835dce291080d9843e6b71.tar.bz2
dokka-e33ea05d10a35adfe6835dce291080d9843e6b71.zip
Use FQ name instead of simple name to identify array classes. Resolves #68
Diffstat (limited to 'core/src/main/kotlin')
-rw-r--r--core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt2
-rw-r--r--core/src/main/kotlin/Languages/JavaLanguageService.kt21
-rw-r--r--core/src/main/kotlin/Model/DocumentationNode.kt7
-rw-r--r--core/src/main/kotlin/javadoc/docbase.kt2
4 files changed, 23 insertions, 9 deletions
diff --git a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
index 5da41f29..39ad79a6 100644
--- a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
+++ b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
@@ -22,7 +22,7 @@ private fun mapTypeName(psiType: PsiType): String = when (psiType) {
is PsiPrimitiveType -> psiType.canonicalText
is PsiClassType -> psiType.resolve()?.qualifiedName ?: psiType.className
is PsiEllipsisType -> mapTypeName(psiType.componentType)
- is PsiArrayType -> "Array"
+ is PsiArrayType -> "kotlin.Array"
else -> psiType.canonicalText
}
diff --git a/core/src/main/kotlin/Languages/JavaLanguageService.kt b/core/src/main/kotlin/Languages/JavaLanguageService.kt
index d6f9ade5..f3b567d3 100644
--- a/core/src/main/kotlin/Languages/JavaLanguageService.kt
+++ b/core/src/main/kotlin/Languages/JavaLanguageService.kt
@@ -43,15 +43,24 @@ class JavaLanguageService : LanguageService {
}
}
- fun getArrayElementType(node: DocumentationNode): DocumentationNode? = when (node.name) {
- "Array" -> node.details(NodeKind.Type).singleOrNull()?.let { et -> getArrayElementType(et) ?: et } ?: DocumentationNode("Object", node.content, NodeKind.ExternalClass)
- "IntArray", "LongArray", "ShortArray", "ByteArray", "CharArray", "DoubleArray", "FloatArray", "BooleanArray" -> DocumentationNode(node.name.removeSuffix("Array").toLowerCase(), node.content, NodeKind.Type)
+ fun getArrayElementType(node: DocumentationNode): DocumentationNode? = when (node.qualifiedName()) {
+ "kotlin.Array" ->
+ node.details(NodeKind.Type).singleOrNull()?.let { et -> getArrayElementType(et) ?: et } ?: DocumentationNode("Object", node.content, NodeKind.ExternalClass)
+
+ "kotlin.IntArray", "kotlin.LongArray", "kotlin.ShortArray", "kotlin.ByteArray",
+ "kotlin.CharArray", "kotlin.DoubleArray", "kotlin.FloatArray", "kotlin.BooleanArray" ->
+ DocumentationNode(node.name.removeSuffix("Array").toLowerCase(), node.content, NodeKind.Type)
+
else -> null
}
- fun getArrayDimension(node: DocumentationNode): Int = when (node.name) {
- "Array" -> 1 + (node.details(NodeKind.Type).singleOrNull()?.let { getArrayDimension(it) } ?: 0)
- "IntArray", "LongArray", "ShortArray", "ByteArray", "CharArray", "DoubleArray", "FloatArray", "BooleanArray" -> 1
+ fun getArrayDimension(node: DocumentationNode): Int = when (node.qualifiedName()) {
+ "kotlin.Array" ->
+ 1 + (node.details(NodeKind.Type).singleOrNull()?.let { getArrayDimension(it) } ?: 0)
+
+ "kotlin.IntArray", "kotlin.LongArray", "kotlin.ShortArray", "kotlin.ByteArray",
+ "kotlin.CharArray", "kotlin.DoubleArray", "kotlin.FloatArray", "kotlin.BooleanArray" ->
+ 1
else -> 0
}
diff --git a/core/src/main/kotlin/Model/DocumentationNode.kt b/core/src/main/kotlin/Model/DocumentationNode.kt
index afa513d1..33543aff 100644
--- a/core/src/main/kotlin/Model/DocumentationNode.kt
+++ b/core/src/main/kotlin/Model/DocumentationNode.kt
@@ -168,4 +168,9 @@ fun DocumentationNode.appendTextNode(text: String,
append(DocumentationNode(text, Content.Empty, kind), refKind)
}
-fun DocumentationNode.qualifiedName() = path.drop(1).map { it.name }.filter { it.length > 0 }.joinToString(".")
+fun DocumentationNode.qualifiedName(): String {
+ if (kind == NodeKind.Type) {
+ return qualifiedNameFromType()
+ }
+ return path.drop(1).map { it.name }.filter { it.length > 0 }.joinToString(".")
+}
diff --git a/core/src/main/kotlin/javadoc/docbase.kt b/core/src/main/kotlin/javadoc/docbase.kt
index 4298316f..795ba84a 100644
--- a/core/src/main/kotlin/javadoc/docbase.kt
+++ b/core/src/main/kotlin/javadoc/docbase.kt
@@ -126,7 +126,7 @@ class ProgramElementAdapter(module: ModuleNodeAdapter, node: DocumentationNode)
override fun isPackagePrivate(): Boolean = false
override fun isStatic(): Boolean = node.hasModifier("static")
override fun modifierSpecifier(): Int = Modifier.PUBLIC + if (isStatic) Modifier.STATIC else 0
- override fun qualifiedName(): String? = if (node.kind == NodeKind.Type) node.qualifiedNameFromType() else node.qualifiedName()
+ override fun qualifiedName(): String? = node.qualifiedName()
override fun annotations(): Array<out AnnotationDesc>? = nodeAnnotations(this).toTypedArray()
override fun modifiers(): String? = "public ${if (isStatic) "static" else ""}".trim()
override fun isProtected(): Boolean = false