diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt index 198bb19cdc4..15dc63e4119 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt @@ -192,6 +192,7 @@ interface DescriptorRendererOptions { var excludedAnnotationClasses: Set var excludedTypeAnnotationClasses: Set var annotationFilter: ((AnnotationDescriptor) -> Boolean)? + var eachAnnotationOnNewLine: Boolean var annotationArgumentsRenderingPolicy: AnnotationArgumentsRenderingPolicy val includeAnnotationArguments: Boolean get() = annotationArgumentsRenderingPolicy.includeAnnotationArguments diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 44f97db3a33..0f757e40cfa 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -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(" ") + } } } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt index 7541923c5dc..5730d23ea1c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt @@ -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()) override var excludedTypeAnnotationClasses by property(ExcludedTypeAnnotations.internalAnnotationsForResolve) diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt index 6feb086865c..50a893714a5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt @@ -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 {