diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveSingleExpressionStringTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveSingleExpressionStringTemplateIntention.kt index 36c19296684..a491287e1c5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveSingleExpressionStringTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveSingleExpressionStringTemplateIntention.kt @@ -30,9 +30,15 @@ private fun KtStringTemplateExpression.singleExpressionOrNull() = children.singleOrNull()?.children?.firstOrNull() as? KtExpression class RemoveSingleExpressionStringTemplateInspection : IntentionBasedInspection( - RemoveSingleExpressionStringTemplateIntention() + RemoveSingleExpressionStringTemplateIntention(), + additionalChecker = { + templateExpression -> + templateExpression.singleExpressionOrNull()?.let { + KotlinBuiltIns.isString(it.getType(it.analyze())) + } ?: false + } ) { - override val problemText = "Single-expression string template" + override val problemText = "Redundant string template" } class RemoveSingleExpressionStringTemplateIntention : SelfTargetingOffsetIndependentIntention( diff --git a/idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/expected.xml b/idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/expected.xml new file mode 100644 index 00000000000..6995de9850a --- /dev/null +++ b/idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/expected.xml @@ -0,0 +1,10 @@ + + + test.kt + 4 + light_idea_test_case + + Remove redundant string template + Redundant string template + + \ No newline at end of file diff --git a/idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/inspections.test b/idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/inspections.test new file mode 100644 index 00000000000..a6d50e44d1e --- /dev/null +++ b/idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/inspections.test @@ -0,0 +1 @@ +// INSPECTION_CLASS: org.jetbrains.kotlin.idea.intentions.RemoveSingleExpressionStringTemplateInspection diff --git a/idea/testData/inspections/removeSingleExpressionStringTemplate/test.kt b/idea/testData/inspections/removeSingleExpressionStringTemplate/test.kt new file mode 100644 index 00000000000..9d93e652cd0 --- /dev/null +++ b/idea/testData/inspections/removeSingleExpressionStringTemplate/test.kt @@ -0,0 +1,6 @@ +// NO +val x = "Hello" +// YES +val y = "$x" +// NO +val z = "${y.hashCode()}" \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/InspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/InspectionTestGenerated.java index 90aa94d37de..1d664b98f48 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/InspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/InspectionTestGenerated.java @@ -226,6 +226,12 @@ public class InspectionTestGenerated extends AbstractInspectionTest { doTest(fileName); } + @TestMetadata("removeSingleExpressionStringTemplate/inspectionData/inspections.test") + public void testRemoveSingleExpressionStringTemplate_inspectionData_Inspections_test() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspections/removeSingleExpressionStringTemplate/inspectionData/inspections.test"); + doTest(fileName); + } + @TestMetadata("replaceCallWithComparison/inspectionData/inspections.test") public void testReplaceCallWithComparison_inspectionData_Inspections_test() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspections/replaceCallWithComparison/inspectionData/inspections.test");