From 58fb1dede316e25acad8630adb923fa18b2d64d4 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 7 Nov 2019 17:55:38 +0900 Subject: [PATCH] Multiline string enter handler: do not insert 'trimIndent()' in const (KT-34785) #KT-34785 Fixed --- .../idea/editor/KotlinMultilineStringEnterHandler.kt | 2 +- .../multilineString/spaces/noTrimIndentInConst.kt | 9 +++++++++ .../idea/editor/MultiLineStringIndentTestGenerated.java | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 idea/testData/editor/enterHandler/multilineString/spaces/noTrimIndentInConst.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt index 33239737e20..f4dbc5ea82a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt @@ -358,7 +358,7 @@ class KotlinMultilineStringEnterHandler : EnterHandlerDelegateAdapter() { fun insertTrimCall(document: Document, literal: KtStringTemplateExpression, marginChar: Char?) { if (hasTrimIndentCallInChain(literal) || getMarginCharFromTrimMarginCallsInChain(literal) != null) return - if (literal.parents.any { it is KtAnnotationEntry }) return + if (literal.parents.any { it is KtAnnotationEntry || (it as? KtProperty)?.hasModifier(KtTokens.CONST_KEYWORD) == true }) return if (marginChar == null) { document.insertString(literal.textRange.endOffset, ".$TRIM_INDENT_CALL()") diff --git a/idea/testData/editor/enterHandler/multilineString/spaces/noTrimIndentInConst.kt b/idea/testData/editor/enterHandler/multilineString/spaces/noTrimIndentInConst.kt new file mode 100644 index 00000000000..d034a7c6299 --- /dev/null +++ b/idea/testData/editor/enterHandler/multilineString/spaces/noTrimIndentInConst.kt @@ -0,0 +1,9 @@ +object O { + const val s = """""" +} +//----- +object O { + const val s = """ + + """ +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java index b3276278b32..88cae99522d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java @@ -220,6 +220,11 @@ public class MultiLineStringIndentTestGenerated extends AbstractMultiLineStringI runTest("idea/testData/editor/enterHandler/multilineString/spaces/noTrimIndentInAnnotations.kt"); } + @TestMetadata("noTrimIndentInConst.kt") + public void testNoTrimIndentInConst() throws Exception { + runTest("idea/testData/editor/enterHandler/multilineString/spaces/noTrimIndentInConst.kt"); + } + @TestMetadata("restoreIndentFromEmptyLine.kt") public void testRestoreIndentFromEmptyLine() throws Exception { runTest("idea/testData/editor/enterHandler/multilineString/spaces/restoreIndentFromEmptyLine.kt");