From d75b938089036aff01fbb515f8ae0062aac08d59 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Sun, 29 Sep 2019 07:02:19 +0900 Subject: [PATCH] Formatter: don't format elvis operator in string template #KT-34049 Fixed --- .../jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt | 2 +- idea/testData/formatter/ElvisInStringTemplate.after.kt | 6 ++++++ idea/testData/formatter/ElvisInStringTemplate.kt | 6 ++++++ .../jetbrains/kotlin/formatter/FormatterTestGenerated.java | 5 +++++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 idea/testData/formatter/ElvisInStringTemplate.after.kt create mode 100644 idea/testData/formatter/ElvisInStringTemplate.kt diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt index 1c7d12e44fa..1512b21f475 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -612,7 +612,7 @@ abstract class KotlinCommonBlock( } } } - if (nodePsi.operationToken == ELVIS) { + if (nodePsi.operationToken == ELVIS && nodePsi.getStrictParentOfType() == null) { return { childElement -> if (childElement.elementType == OPERATION_REFERENCE) { Wrap.createWrap(settings.kotlinCustomSettings.WRAP_ELVIS_EXPRESSIONS, true) diff --git a/idea/testData/formatter/ElvisInStringTemplate.after.kt b/idea/testData/formatter/ElvisInStringTemplate.after.kt new file mode 100644 index 00000000000..cd3d1f288ea --- /dev/null +++ b/idea/testData/formatter/ElvisInStringTemplate.after.kt @@ -0,0 +1,6 @@ +fun test() { + val projectExtId: String? = "id" + val s = "https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:${projectExtId ?: "Kotlin_dev_Compiler"})" +} + +// SET_INT: WRAP_ELVIS_EXPRESSIONS = 2 \ No newline at end of file diff --git a/idea/testData/formatter/ElvisInStringTemplate.kt b/idea/testData/formatter/ElvisInStringTemplate.kt new file mode 100644 index 00000000000..cd3d1f288ea --- /dev/null +++ b/idea/testData/formatter/ElvisInStringTemplate.kt @@ -0,0 +1,6 @@ +fun test() { + val projectExtId: String? = "id" + val s = "https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:${projectExtId ?: "Kotlin_dev_Compiler"})" +} + +// SET_INT: WRAP_ELVIS_EXPRESSIONS = 2 \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index 55b56ad3164..e56924b9916 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -235,6 +235,11 @@ public class FormatterTestGenerated extends AbstractFormatterTest { runTest("idea/testData/formatter/ElvisContinuationIndentOptions.after.kt"); } + @TestMetadata("ElvisInStringTemplate.after.kt") + public void testElvisInStringTemplate() throws Exception { + runTest("idea/testData/formatter/ElvisInStringTemplate.after.kt"); + } + @TestMetadata("ElvisIndent.after.kt") public void testElvisIndent() throws Exception { runTest("idea/testData/formatter/ElvisIndent.after.kt");