diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt index 418b6512b8f..b05f7300156 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt @@ -51,9 +51,9 @@ open class ConvertToStringTemplateIntention : SelfTargetingOffsetIndependentInte fun shouldSuggestToConvert(expression: KtBinaryExpression): Boolean { val entries = buildReplacement(expression).entries return entries.none { it is KtBlockStringTemplateEntry } - && !entries.all { it is KtLiteralStringTemplateEntry || it is KtEscapeStringTemplateEntry } - && entries.count { it is KtLiteralStringTemplateEntry } > 1 - && !expression.textContains('\n') + && !entries.all { it is KtLiteralStringTemplateEntry || it is KtEscapeStringTemplateEntry } + && entries.count { it is KtLiteralStringTemplateEntry } >= 1 + && !expression.textContains('\n') } @JvmStatic diff --git a/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml b/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml index 755d6ca805f..01153db8323 100644 --- a/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml +++ b/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml @@ -7,4 +7,44 @@ Convert string concatenation to string template Convert concatenation to template + + noBracesSimpleFollowedByDot.kt + 3 + light_idea_test_case + + String concatenation that can be converted to string template + Convert concatenation to template + + + specialCharsInCharLiteral.kt + 2 + light_idea_test_case + + String concatenation that can be converted to string template + Convert concatenation to template + + + doesNotCorruptExistingTemplate.kt + 4 + light_idea_test_case + + String concatenation that can be converted to string template + Convert concatenation to template + + + unescapeSingleQuote.kt + 2 + light_idea_test_case + + String concatenation that can be converted to string template + Convert concatenation to template + + + noBracesForLastSimpleExpression.kt + 3 + light_idea_test_case + + String concatenation that can be converted to string template + Convert concatenation to template + \ No newline at end of file diff --git a/j2k/testData/fileOrElement/assertStatement/withStringDetail2.kt b/j2k/testData/fileOrElement/assertStatement/withStringDetail2.kt index 97aa2c8f30f..2265730172b 100644 --- a/j2k/testData/fileOrElement/assertStatement/withStringDetail2.kt +++ b/j2k/testData/fileOrElement/assertStatement/withStringDetail2.kt @@ -1 +1 @@ -assert(true) { "string details:" + x } \ No newline at end of file +assert(true) { "string details:$x" } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect1.kt b/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect1.kt index 454171a08ca..1affa125c06 100644 --- a/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect1.kt +++ b/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect1.kt @@ -11,6 +11,6 @@ class C { } internal fun foo() { - println("myX = " + myX) + println("myX = $myX") } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect2.kt b/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect2.kt index 0326d4a8579..1f29f00e24a 100644 --- a/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect2.kt +++ b/j2k/testData/fileOrElement/detectProperties/GetterWithSideEffect2.kt @@ -11,6 +11,6 @@ class C { } internal fun foo() { - println("x = " + x) + println("x = $x") } -} +} \ No newline at end of file diff --git a/j2k/testData/fileOrElement/issues/kt-1074.java b/j2k/testData/fileOrElement/issues/kt-1074.java index e9b01318ba7..cea93541359 100644 --- a/j2k/testData/fileOrElement/issues/kt-1074.java +++ b/j2k/testData/fileOrElement/issues/kt-1074.java @@ -2,13 +2,8 @@ package demo; class Test { - static void subListRangeCheck(int fromIndex, int toIndex, int size) { - if (fromIndex < 0) - throw new IndexOutOfBoundsException("fromIndex = " + fromIndex); - if (toIndex > size) - throw new IndexOutOfBoundsException("toIndex = " + toIndex); - if (fromIndex > toIndex) - throw new IllegalArgumentException("fromIndex(" + fromIndex - + ") > toIndex(" + toIndex + ")"); + static void bar(int a) { + if (a < 0) + throw new RuntimeException("a = " + a); } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/issues/kt-1074.kt b/j2k/testData/fileOrElement/issues/kt-1074.kt index ee5e55d2f59..1ac7a27a8d7 100644 --- a/j2k/testData/fileOrElement/issues/kt-1074.kt +++ b/j2k/testData/fileOrElement/issues/kt-1074.kt @@ -1,13 +1,8 @@ package demo internal object Test { - fun subListRangeCheck(fromIndex: Int, toIndex: Int, size: Int) { - if (fromIndex < 0) - throw IndexOutOfBoundsException("fromIndex = " + fromIndex) - if (toIndex > size) - throw IndexOutOfBoundsException("toIndex = " + toIndex) - if (fromIndex > toIndex) - throw IllegalArgumentException("fromIndex(" + fromIndex - + ") > toIndex(" + toIndex + ")") + fun bar(a: Int) { + if (a < 0) + throw RuntimeException("a = $a") } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt b/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt index a153c7bcd6a..e2d33fcc448 100644 --- a/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt +++ b/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt @@ -89,7 +89,7 @@ internal class A { val limit = 5 useSplit(s.split("\\s+".toRegex(), limit.coerceAtLeast(0)).toTypedArray()) s.trim { it <= ' ' } - s + " another" + "$s another" s.toByteArray() s.toByteArray(Charset.forName("utf-8")) diff --git a/j2k/testData/fileOrElement/overloads/Annotations.kt b/j2k/testData/fileOrElement/overloads/Annotations.kt index 1f3deffbf66..cd88749ef85 100644 --- a/j2k/testData/fileOrElement/overloads/Annotations.kt +++ b/j2k/testData/fileOrElement/overloads/Annotations.kt @@ -31,6 +31,6 @@ internal class A { } fun f(p: Int) { - println("p = " + p) + println("p = $p") } -} +} \ No newline at end of file diff --git a/j2k/testData/fileOrElement/overloads/Override.kt b/j2k/testData/fileOrElement/overloads/Override.kt index a575b6a1243..320f95fb191 100644 --- a/j2k/testData/fileOrElement/overloads/Override.kt +++ b/j2k/testData/fileOrElement/overloads/Override.kt @@ -5,7 +5,7 @@ internal interface I { internal open class A : I { override fun foo(i: Int, c: Char, s: String) { - println("foo" + i + c + s) + println("foo$i$c$s") } fun foo(i: Int, c: Char) { @@ -43,4 +43,4 @@ internal class B : A() { override fun y(i: Int) { super.y(i) } -} +} \ No newline at end of file diff --git a/j2k/testData/fileOrElement/overloads/Simple.kt b/j2k/testData/fileOrElement/overloads/Simple.kt index a3cd69d5585..18743362db7 100644 --- a/j2k/testData/fileOrElement/overloads/Simple.kt +++ b/j2k/testData/fileOrElement/overloads/Simple.kt @@ -1,7 +1,7 @@ internal class A { @JvmOverloads fun foo(i: Int, c: Char = 'a', s: String = "") { - println("foo" + i + c + s) + println("foo$i$c$s") } @JvmOverloads @@ -9,4 +9,4 @@ internal class A { println("s = " + s!!) return 0 } -} +} \ No newline at end of file