Redundant curly braces in string template: remove braces for 'this'

#KT-32972 Fixed
This commit is contained in:
Toshiaki Kameyama
2019-07-26 22:23:50 +09:00
committed by Dmitry Gridin
parent 8f2a73b734
commit 7c2f6ecba7
5 changed files with 24 additions and 2 deletions
@@ -558,10 +558,14 @@ fun KtModifierList.normalize(): KtModifierList {
}
fun KtBlockStringTemplateEntry.canDropBraces() =
expression is KtNameReferenceExpression && canPlaceAfterSimpleNameEntry(nextSibling)
(expression is KtNameReferenceExpression || expression is KtThisExpression) && canPlaceAfterSimpleNameEntry(nextSibling)
fun KtBlockStringTemplateEntry.dropBraces(): KtSimpleNameStringTemplateEntry {
val name = (expression as KtNameReferenceExpression).getReferencedNameElement().text
val name = if (expression is KtThisExpression) {
KtTokens.THIS_KEYWORD.value
} else {
(expression as KtNameReferenceExpression).getReferencedNameElement().text
}
val newEntry = KtPsiFactory(this).createSimpleNameStringTemplateEntry(name)
return replaced(newEntry)
}
@@ -0,0 +1,2 @@
// PROBLEM: none
fun String.bar() = "x <caret>${this.length}"
@@ -0,0 +1,3 @@
// HIGHLIGHT: GENERIC_ERROR_OR_WARNING
fun String.bar() = "x <caret>${this}"
@@ -0,0 +1,3 @@
// HIGHLIGHT: GENERIC_ERROR_OR_WARNING
fun String.bar() = "x $this"
@@ -7890,6 +7890,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets6.kt");
}
@TestMetadata("necessaryBrackets7.kt")
public void testNecessaryBrackets7() throws Exception {
runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets7.kt");
}
@TestMetadata("unnecessaryBrackets1.kt")
public void testUnnecessaryBrackets1() throws Exception {
runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt");
@@ -7929,6 +7934,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
public void testUnnecessaryBrackets8() throws Exception {
runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets8.kt");
}
@TestMetadata("unnecessaryBrackets9.kt")
public void testUnnecessaryBrackets9() throws Exception {
runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt");
}
}
@TestMetadata("idea/testData/inspectionsLocal/removeEmptyParenthesesFromAnnotationEntry")