Single-expression string template is inspection for strings and intention otherwise #KT-13113 Fixed

(cherry picked from commit 266f9d0)
This commit is contained in:
Mikhail Glukhikh
2016-08-02 12:41:43 +03:00
committed by Mikhail Glukhikh
parent 9b8c55d823
commit d868410093
5 changed files with 31 additions and 2 deletions
@@ -30,9 +30,15 @@ private fun KtStringTemplateExpression.singleExpressionOrNull() =
children.singleOrNull()?.children?.firstOrNull() as? KtExpression
class RemoveSingleExpressionStringTemplateInspection : IntentionBasedInspection<KtStringTemplateExpression>(
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<KtStringTemplateExpression>(
@@ -0,0 +1,10 @@
<problems>
<problem>
<file>test.kt</file>
<line>4</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Remove redundant string template</problem_class>
<description>Redundant string template</description>
</problem>
</problems>
@@ -0,0 +1 @@
// INSPECTION_CLASS: org.jetbrains.kotlin.idea.intentions.RemoveSingleExpressionStringTemplateInspection
@@ -0,0 +1,6 @@
// NO
val x = "Hello"
// YES
val y = "$x"
// NO
val z = "${y.hashCode()}"
@@ -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");