diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt index ca5a53a417a..39d7650db7a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt @@ -29,7 +29,7 @@ import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluat public class ConvertToStringTemplateInspection : IntentionBasedInspection( ConvertToStringTemplateIntention(), - { ConvertToStringTemplateIntention().isConversionResultSimple(it) } + { ConvertToStringTemplateIntention().shouldSuggestToConvert(it) } ) public class ConvertToStringTemplateIntention : JetSelfTargetingOffsetIndependentIntention(javaClass(), "Convert concatenation to template") { @@ -50,8 +50,9 @@ public class ConvertToStringTemplateIntention : JetSelfTargetingOffsetIndependen return element.replaced(buildReplacement(element)) } - public fun isConversionResultSimple(expression: JetBinaryExpression): Boolean { - return buildReplacement(expression).getEntries().none { it is JetBlockStringTemplateEntry } + public fun shouldSuggestToConvert(expression: JetBinaryExpression): Boolean { + val entries = buildReplacement(expression).entries + return entries.none { it is JetBlockStringTemplateEntry } && entries.count { it is JetLiteralStringTemplateEntry } > 1 } private fun isApplicableToNoParentCheck(expression: JetBinaryExpression): Boolean { diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt index 707b73dc8ed..9fbe64965eb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt @@ -148,7 +148,7 @@ object J2KPostProcessingRegistrar { private val intention = ConvertToStringTemplateIntention() override fun createAction(element: JetElement, diagnostics: Diagnostics): (() -> Unit)? { - if (element is JetBinaryExpression && intention.isApplicableTo(element) && intention.isConversionResultSimple(element)) { + if (element is JetBinaryExpression && intention.isApplicableTo(element) && intention.shouldSuggestToConvert(element)) { return { intention.applyTo(element) } } else { diff --git a/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml b/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml index c790804144c..7d7fe184033 100644 --- a/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml +++ b/idea/testData/intentions/convertToStringTemplate/inspectionData/expected.xml @@ -1,20 +1,4 @@ - - noBracesSimpleFollowedByDot.kt - 3 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - noBracesForLastSimpleExpression.kt - 3 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - multilineString.kt 3 @@ -23,78 +7,7 @@ Convert string concatenation to string template Convert concatenation to template - - interpolateStringWithInt.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - interpolateStringWithFloat.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - interpolateDollarSign.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - interpolateChar.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - interpolate2Vals.kt - 4 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - interpolate2StringConstants.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - combinesNonStringsAsStrings2.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - combinesNonStringsAsStrings.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - - - combineEmptyStrings.kt - 2 - light_idea_test_case - - Convert string concatenation to string template - Convert concatenation to template - + backslashNMultilineString.kt 2 @@ -103,12 +16,4 @@ Convert string concatenation to string template Convert concatenation to template - - doesNotCorruptExistingTemplate.kt - 4 - light_idea_test_case - - Convert string concatenation 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 2265730172b..97aa2c8f30f 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/issues/kt-1074.kt b/j2k/testData/fileOrElement/issues/kt-1074.kt index b28081de91a..51baf35f29a 100644 --- a/j2k/testData/fileOrElement/issues/kt-1074.kt +++ b/j2k/testData/fileOrElement/issues/kt-1074.kt @@ -3,9 +3,9 @@ package demo object Test { fun subListRangeCheck(fromIndex: Int, toIndex: Int, size: Int) { if (fromIndex < 0) - throw IndexOutOfBoundsException("fromIndex = $fromIndex") + throw IndexOutOfBoundsException("fromIndex = " + fromIndex) if (toIndex > size) - throw IndexOutOfBoundsException("toIndex = $toIndex") + throw IndexOutOfBoundsException("toIndex = " + toIndex) if (fromIndex > toIndex) throw IllegalArgumentException("fromIndex($fromIndex) > toIndex($toIndex)") } diff --git a/j2k/testData/fileOrElement/overloads/Annotations.kt b/j2k/testData/fileOrElement/overloads/Annotations.kt index 4fc24c9da90..95b6e100532 100644 --- a/j2k/testData/fileOrElement/overloads/Annotations.kt +++ b/j2k/testData/fileOrElement/overloads/Annotations.kt @@ -30,6 +30,6 @@ class A { } public fun f(p: Int) { - println("p = $p") + println("p = " + p) } } diff --git a/j2k/testData/fileOrElement/overloads/Override.kt b/j2k/testData/fileOrElement/overloads/Override.kt index 9cace0bc255..9fbf7956303 100644 --- a/j2k/testData/fileOrElement/overloads/Override.kt +++ b/j2k/testData/fileOrElement/overloads/Override.kt @@ -5,7 +5,7 @@ interface I { open class A : I { override fun foo(i: Int, c: Char, s: String) { - println("foo$i$c$s") + println("foo" + i + c + s) } public fun foo(i: Int, c: Char) { diff --git a/j2k/testData/fileOrElement/overloads/Simple.kt b/j2k/testData/fileOrElement/overloads/Simple.kt index 602a3dc68f2..3378530548b 100644 --- a/j2k/testData/fileOrElement/overloads/Simple.kt +++ b/j2k/testData/fileOrElement/overloads/Simple.kt @@ -1,6 +1,6 @@ class A { JvmOverloads fun foo(i: Int, c: Char = 'a', s: String = "") { - println("foo$i$c$s") + println("foo" + i + c + s) } JvmOverloads fun bar(s: String? = null): Int {