From 7c2f6ecba77f99702e057a7c1aa2ed0c8b160f14 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Fri, 26 Jul 2019 22:23:50 +0900 Subject: [PATCH] Redundant curly braces in string template: remove braces for 'this' #KT-32972 Fixed --- .../jetbrains/kotlin/idea/core/psiModificationUtils.kt | 8 ++++++-- .../necessaryBrackets7.kt | 2 ++ .../unnecessaryBrackets9.kt | 3 +++ .../unnecessaryBrackets9.kt.after | 3 +++ .../idea/inspections/LocalInspectionTestGenerated.java | 10 ++++++++++ 5 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets7.kt create mode 100644 idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt create mode 100644 idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt.after diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt index 551f64dbca7..b4c73797ea6 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt @@ -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) } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets7.kt b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets7.kt new file mode 100644 index 00000000000..4c8b27bf84a --- /dev/null +++ b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets7.kt @@ -0,0 +1,2 @@ +// PROBLEM: none +fun String.bar() = "x ${this.length}" \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt new file mode 100644 index 00000000000..56ea42bb742 --- /dev/null +++ b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt @@ -0,0 +1,3 @@ +// HIGHLIGHT: GENERIC_ERROR_OR_WARNING + +fun String.bar() = "x ${this}" \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt.after b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt.after new file mode 100644 index 00000000000..8ec2dbddbcd --- /dev/null +++ b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets9.kt.after @@ -0,0 +1,3 @@ +// HIGHLIGHT: GENERIC_ERROR_OR_WARNING + +fun String.bar() = "x $this" \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 83b4d10d5be..4b2de55a465 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -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")