Single-expression string template is inspection for strings and intention otherwise #KT-13113 Fixed
(cherry picked from commit 266f9d0)
This commit is contained in:
committed by
Mikhail Glukhikh
parent
9b8c55d823
commit
d868410093
+8
-2
@@ -30,9 +30,15 @@ private fun KtStringTemplateExpression.singleExpressionOrNull() =
|
|||||||
children.singleOrNull()?.children?.firstOrNull() as? KtExpression
|
children.singleOrNull()?.children?.firstOrNull() as? KtExpression
|
||||||
|
|
||||||
class RemoveSingleExpressionStringTemplateInspection : IntentionBasedInspection<KtStringTemplateExpression>(
|
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>(
|
class RemoveSingleExpressionStringTemplateIntention : SelfTargetingOffsetIndependentIntention<KtStringTemplateExpression>(
|
||||||
|
|||||||
+10
@@ -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>
|
||||||
Vendored
+1
@@ -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);
|
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")
|
@TestMetadata("replaceCallWithComparison/inspectionData/inspections.test")
|
||||||
public void testReplaceCallWithComparison_inspectionData_Inspections_test() throws Exception {
|
public void testReplaceCallWithComparison_inspectionData_Inspections_test() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspections/replaceCallWithComparison/inspectionData/inspections.test");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspections/replaceCallWithComparison/inspectionData/inspections.test");
|
||||||
|
|||||||
Reference in New Issue
Block a user