From f80b98cd0edaf84c792bb580b9048a07a0f6c1a1 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Tue, 30 Mar 2021 15:27:20 +0300 Subject: [PATCH] Assert that the separation of two annotations on function type during rendering it, is any whitespace-like symbol, not only whitespace itself E.g. in quick doc mode (HTML), it may be line break ^KT-38747 Fixed --- .../jetbrains/kotlin/renderer/DescriptorRendererImpl.kt | 2 +- .../quickDoc/renderAnnotatedExtensionFunctionType.kt | 9 +++++++++ .../editor/quickDoc/QuickDocProviderTestGenerated.java | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 idea/testData/editor/quickDoc/renderAnnotatedExtensionFunctionType.kt diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 6f9fc69b30b..5cf85ebbeb7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -323,7 +323,7 @@ internal class DescriptorRendererImpl( insert(lengthBefore, '(') } else { if (hasAnnotations) { - assert(last() == ' ') + assert(last().isWhitespace()) if (get(lastIndex - 1) != ')') { // last annotation rendered without parenthesis - need to add them otherwise parsing will be incorrect insert(lastIndex, "()") diff --git a/idea/testData/editor/quickDoc/renderAnnotatedExtensionFunctionType.kt b/idea/testData/editor/quickDoc/renderAnnotatedExtensionFunctionType.kt new file mode 100644 index 00000000000..13afaffd884 --- /dev/null +++ b/idea/testData/editor/quickDoc/renderAnnotatedExtensionFunctionType.kt @@ -0,0 +1,9 @@ +fun myFun(param: @MyAnnotation (String.() -> Unit)) {} // quick documentation myFun + +@Target(AnnotationTarget.TYPE) +annotation class MyAnnotation + +//INFO:
renderAnnotatedExtensionFunctionType.kt
public fun myFun( +//INFO: param: @MyAnnotation() +//INFO: (String.() → Unit) +//INFO: ): Unit

diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java index 7685a461c81..65287e0f57a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java @@ -274,6 +274,11 @@ public class QuickDocProviderTestGenerated extends AbstractQuickDocProviderTest runTest("idea/testData/editor/quickDoc/OnMethodUsageWithTypeParameter.kt"); } + @TestMetadata("renderAnnotatedExtensionFunctionType.kt") + public void testRenderAnnotatedExtensionFunctionType() throws Exception { + runTest("idea/testData/editor/quickDoc/renderAnnotatedExtensionFunctionType.kt"); + } + @TestMetadata("Samples.kt") public void testSamples() throws Exception { runTest("idea/testData/editor/quickDoc/Samples.kt");