aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Jemerov <yole@jetbrains.com>2015-02-13 15:36:13 +0100
committerDmitry Jemerov <yole@jetbrains.com>2015-02-13 15:36:13 +0100
commitacb49b47437b1534b910e23927f8fddca26c69f3 (patch)
treec3a3d1bb80e8e3c58ba23eb8ae43aea716f5ede7
parent7697bed83f4f4c1e7b853e415053107e45d8aded (diff)
downloaddokka-acb49b47437b1534b910e23927f8fddca26c69f3.tar.gz
dokka-acb49b47437b1534b910e23927f8fddca26c69f3.tar.bz2
dokka-acb49b47437b1534b910e23927f8fddca26c69f3.zip
process modifiers of Java elements
-rw-r--r--src/Java/JavaDocumentationBuilder.kt18
-rw-r--r--test/data/java/memberWithModifiers.java12
-rw-r--r--test/src/model/JavaTest.kt14
3 files changed, 43 insertions, 1 deletions
diff --git a/src/Java/JavaDocumentationBuilder.kt b/src/Java/JavaDocumentationBuilder.kt
index c9379386..7443db06 100644
--- a/src/Java/JavaDocumentationBuilder.kt
+++ b/src/Java/JavaDocumentationBuilder.kt
@@ -11,6 +11,8 @@ import com.intellij.psi.PsiNamedElement
import com.intellij.psi.PsiDocCommentOwner
import com.intellij.psi.PsiClassType
import com.intellij.psi.PsiPrimitiveType
+import com.intellij.psi.PsiModifierListOwner
+import com.intellij.psi.PsiModifier
public class JavaDocumentationBuilder() {
fun appendFile(file: PsiJavaFile, module: DocumentationModule) {
@@ -31,6 +33,9 @@ public class JavaDocumentationBuilder() {
fun DocumentationNode(element: PsiNamedElement, kind: Kind): DocumentationNode {
val docComment = if (element is PsiDocCommentOwner) parseDocumentation(element.getDocComment()) else Content.Empty
val node = DocumentationNode(element.getName() ?: "<anonymous>", docComment, kind)
+ if (element is PsiModifierListOwner) {
+ node.appendModifiers(element)
+ }
return node
}
@@ -67,6 +72,19 @@ public class JavaDocumentationBuilder() {
return node
}
+ fun DocumentationNode.appendModifiers(element: PsiModifierListOwner) {
+ val modifierList = element.getModifierList()
+ if (modifierList == null) {
+ return
+ }
+ PsiModifier.MODIFIERS.forEach {
+ if (modifierList.hasExplicitModifier(it)) {
+ val modifierNode = DocumentationNode(it, Content.Empty, Kind.Modifier)
+ append(modifierNode, DocumentationReference.Kind.Detail)
+ }
+ }
+ }
+
fun DocumentationNode.appendType(psiType: PsiType?, kind: DocumentationNode.Kind = DocumentationNode.Kind.Type) {
if (psiType == null) {
return
diff --git a/test/data/java/memberWithModifiers.java b/test/data/java/memberWithModifiers.java
new file mode 100644
index 00000000..2b14b2e1
--- /dev/null
+++ b/test/data/java/memberWithModifiers.java
@@ -0,0 +1,12 @@
+package test
+
+abstract class Test {
+ /**
+ * Summary for Function
+ * @param name is String parameter
+ * @param value is int parameter
+ */
+ protected final void fn(String name, int value) {
+
+ }
+} \ No newline at end of file
diff --git a/test/src/model/JavaTest.kt b/test/src/model/JavaTest.kt
index 602e1382..281d51ef 100644
--- a/test/src/model/JavaTest.kt
+++ b/test/src/model/JavaTest.kt
@@ -6,7 +6,7 @@ import org.junit.*
public class JavaTest {
Test fun function() {
- verifyModel("test/data/java/") { model ->
+ verifyModel("test/data/java/member.java") { model ->
val pkg = model.members.single()
with(pkg.members.single()) {
assertEquals("Test", name)
@@ -30,4 +30,16 @@ public class JavaTest {
}
}
}
+
+ Test fun memberWithModifiers() {
+ verifyModel("test/data/java/memberWithModifiers.java") { model ->
+ val pkg = model.members.single()
+ with(pkg.members.single()) {
+ assertEquals("abstract", details[0].name)
+ with(members.single()) {
+ assertEquals("protected", details[0].name)
+ }
+ }
+ }
+ }
}