aboutsummaryrefslogtreecommitdiff
path: root/src/Kotlin/DocumentationBuilder.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/Kotlin/DocumentationBuilder.kt')
-rw-r--r--src/Kotlin/DocumentationBuilder.kt10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/Kotlin/DocumentationBuilder.kt b/src/Kotlin/DocumentationBuilder.kt
index 9321e5ca..b526e0ed 100644
--- a/src/Kotlin/DocumentationBuilder.kt
+++ b/src/Kotlin/DocumentationBuilder.kt
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant
import org.jetbrains.kotlin.resolve.constants.ConstantValue
import org.jetbrains.kotlin.resolve.constants.TypedCompileTimeConstant
+import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.isDocumentedAnnotation
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
@@ -327,6 +328,7 @@ class DocumentationBuilder(val resolutionFacade: ResolutionFacade,
}
append(node, DocumentationReference.Kind.Detail)
+ node.appendAnnotations(jetType)
for (typeArgument in jetType.arguments)
node.appendProjection(typeArgument)
}
@@ -335,7 +337,7 @@ class DocumentationBuilder(val resolutionFacade: ResolutionFacade,
DescriptorUtils.getFqName(this).asString() in boringBuiltinClasses
fun DocumentationNode.appendAnnotations(annotated: Annotated) {
- annotated.annotations.filter { it.source.getPsi() != null && it.mustBeDocumented() }.forEach {
+ annotated.annotations.filter { it.isDocumented() }.forEach {
val annotationNode = it.build()
if (annotationNode != null) {
append(annotationNode,
@@ -344,6 +346,12 @@ class DocumentationBuilder(val resolutionFacade: ResolutionFacade,
}
}
+ private fun AnnotationDescriptor.isDocumented(): Boolean {
+ if (source.getPsi() != null && mustBeDocumented()) return true
+ val annotationClassName = type.constructor.declarationDescriptor?.fqNameSafe?.asString()
+ return annotationClassName == "kotlin.Extension"
+ }
+
fun AnnotationDescriptor.mustBeDocumented(): Boolean {
val annotationClass = type.constructor.declarationDescriptor as? Annotated ?: return false
return annotationClass.isDocumentedAnnotation()