KT-22815: Render annotations on separate lines

This commit is contained in:
Simon Ogorodnik
2018-06-09 16:32:38 +03:00
parent 831e7fdc06
commit 9a34e91dec
4 changed files with 12 additions and 1 deletions
@@ -192,6 +192,7 @@ interface DescriptorRendererOptions {
var excludedAnnotationClasses: Set<FqName>
var excludedTypeAnnotationClasses: Set<FqName>
var annotationFilter: ((AnnotationDescriptor) -> Boolean)?
var eachAnnotationOnNewLine: Boolean
var annotationArgumentsRenderingPolicy: AnnotationArgumentsRenderingPolicy
val includeAnnotationArguments: Boolean get() = annotationArgumentsRenderingPolicy.includeAnnotationArguments
@@ -403,7 +403,12 @@ internal class DescriptorRendererImpl(
val annotationFilter = annotationFilter
for ((annotation, target) in annotated.annotations.getAllAnnotations()) {
if (annotation.fqName !in excluded && (annotationFilter == null || annotationFilter(annotation))) {
append(renderAnnotation(annotation, target)).append(" ")
append(renderAnnotation(annotation, target))
if (eachAnnotationOnNewLine) {
appendln()
} else {
append(" ")
}
}
}
}
@@ -96,6 +96,8 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
override var renderAccessors by property(false)
override var renderDefaultAnnotationArguments by property(false)
override var eachAnnotationOnNewLine: Boolean by property(false)
override var excludedAnnotationClasses by property(emptySet<FqName>())
override var excludedTypeAnnotationClasses by property(ExcludedTypeAnnotations.internalAnnotationsForResolve)
@@ -48,6 +48,7 @@ import org.jetbrains.kotlin.kdoc.psi.api.KDoc
import org.jetbrains.kotlin.kdoc.psi.impl.KDocSection
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.renderer.AnnotationArgumentsRenderingPolicy
import org.jetbrains.kotlin.renderer.ClassifierNamePolicy
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.resolve.BindingContext
@@ -165,8 +166,10 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() {
private val DESCRIPTOR_RENDERER = DescriptorRenderer.HTML.withOptions {
classifierNamePolicy = HtmlClassifierNamePolicy(ClassifierNamePolicy.SHORT)
valueParametersHandler = WrapValueParameterHandler(valueParametersHandler)
annotationArgumentsRenderingPolicy = AnnotationArgumentsRenderingPolicy.UNLESS_EMPTY
renderCompanionObjectName = true
withDefinedIn = false
eachAnnotationOnNewLine = true
}
private fun renderEnumSpecialFunction(element: KtClass, functionDescriptor: FunctionDescriptor, quickNavigation: Boolean): String {