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