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 8b6fb8ec829..270df040409 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 @@ -542,8 +542,11 @@ fun KtModifierList.normalize(): KtModifierList { } } -fun KtBlockStringTemplateEntry.canDropBraces() = - (expression is KtNameReferenceExpression || expression is KtThisExpression) && canPlaceAfterSimpleNameEntry(nextSibling) +fun KtBlockStringTemplateEntry.canDropBraces(): Boolean { + val expression = this.expression + return (expression is KtNameReferenceExpression || (expression is KtThisExpression && expression.labelQualifier == null)) + && canPlaceAfterSimpleNameEntry(nextSibling) +} fun KtBlockStringTemplateEntry.dropBraces(): KtSimpleNameStringTemplateEntry { val name = if (expression is KtThisExpression) { diff --git a/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets8.kt b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets8.kt new file mode 100644 index 00000000000..561e6453ae2 --- /dev/null +++ b/idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets8.kt @@ -0,0 +1,12 @@ +// PROBLEM: none +fun main() { + "hello".foo() +} + +fun bar(block: Int.() -> Unit) { block(42) } + +fun String.foo() = bar { + println("this: ${this@foo}") +} + +fun println(s: String) {} \ 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 dc475210388..912ed4f9582 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -8247,6 +8247,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets7.kt"); } + @TestMetadata("necessaryBrackets8.kt") + public void testNecessaryBrackets8() throws Exception { + runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/necessaryBrackets8.kt"); + } + @TestMetadata("unnecessaryBrackets1.kt") public void testUnnecessaryBrackets1() throws Exception { runTest("idea/testData/inspectionsLocal/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt");