From 602de317d68c3a4408829e2f1c7e93f31936399f Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 24 Mar 2016 19:39:34 +0300 Subject: [PATCH] Minor improvement in convert to string template inspection: no highlighting when the expression is split onto multiple lines --- .../idea/intentions/ConvertToStringTemplateIntention.kt | 5 +++-- .../intentions/convertToStringTemplate/onMultipleLines.kt | 5 +++++ .../convertToStringTemplate/onMultipleLines.kt.after | 3 +++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt create mode 100644 idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt index 701f561ee56..75ff4d8e246 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt @@ -49,9 +49,10 @@ class ConvertToStringTemplateIntention : SelfTargetingOffsetIndependentIntention fun shouldSuggestToConvert(expression: KtBinaryExpression): Boolean { val entries = buildReplacement(expression).entries - return entries.none { it is KtBlockStringTemplateEntry } && - !entries.all { it is KtLiteralStringTemplateEntry || it is KtEscapeStringTemplateEntry } + return entries.none { it is KtBlockStringTemplateEntry } + && !entries.all { it is KtLiteralStringTemplateEntry || it is KtEscapeStringTemplateEntry } && entries.count { it is KtLiteralStringTemplateEntry } > 1 + && !expression.textContains('\n') } private fun isApplicableToNoParentCheck(expression: KtBinaryExpression): Boolean { diff --git a/idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt b/idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt new file mode 100644 index 00000000000..5dcc4e43934 --- /dev/null +++ b/idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt @@ -0,0 +1,5 @@ +fun foo(p: Int) { + val v = "line 1\n" + + "line 2: " + p + "\n" + + "line 3" +} diff --git a/idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt.after b/idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt.after new file mode 100644 index 00000000000..e3d06b9ab43 --- /dev/null +++ b/idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt.after @@ -0,0 +1,3 @@ +fun foo(p: Int) { + val v = "line 1\nline 2: $p\nline 3" +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index ccf943bbd0a..b48a907ea43 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -4795,6 +4795,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("onMultipleLines.kt") + public void testOnMultipleLines() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertToStringTemplate/onMultipleLines.kt"); + doTest(fileName); + } + @TestMetadata("onlyForConcat.kt") public void testOnlyForConcat() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertToStringTemplate/onlyForConcat.kt");