diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt index d812d66651c..e8ace0bdc4a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt @@ -79,7 +79,9 @@ open class ConvertToStringTemplateIntention : SelfTargetingOffsetIndependentInte fun buildText(expr: KtExpression?, forceBraces: Boolean): String { if (expr == null) return "" - val expression = KtPsiUtil.safeDeparenthesize(expr) + val expression = KtPsiUtil.safeDeparenthesize(expr).let { + if ((it as? KtDotQualifiedExpression)?.isToString() == true) it.receiverExpression else it + } val expressionText = expression.text when (expression) { is KtConstantExpression -> { diff --git a/idea/testData/intentions/convertToStringTemplate/toString.kt b/idea/testData/intentions/convertToStringTemplate/toString.kt new file mode 100644 index 00000000000..92d344092f5 --- /dev/null +++ b/idea/testData/intentions/convertToStringTemplate/toString.kt @@ -0,0 +1,4 @@ +fun test(a: Any, b: Any, c: Any): String { + return "a:" + a.toString() + ", b:" + b.toString() + "_ c:" + c.toString("") +} +fun Any.toString(s: String) = "" \ No newline at end of file diff --git a/idea/testData/intentions/convertToStringTemplate/toString.kt.after b/idea/testData/intentions/convertToStringTemplate/toString.kt.after new file mode 100644 index 00000000000..d658a913ced --- /dev/null +++ b/idea/testData/intentions/convertToStringTemplate/toString.kt.after @@ -0,0 +1,4 @@ +fun test(a: Any, b: Any, c: Any): String { + return "a:$a, b:${b}_ c:${c.toString("")}" +} +fun Any.toString(s: String) = "" \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 5716fee1f92..c97f0bb109d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -7495,6 +7495,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/convertToStringTemplate/this3.kt"); } + @TestMetadata("toString.kt") + public void testToString() throws Exception { + runTest("idea/testData/intentions/convertToStringTemplate/toString.kt"); + } + @TestMetadata("tricky.kt") public void testTricky() throws Exception { runTest("idea/testData/intentions/convertToStringTemplate/tricky.kt");