From cb66625688b869a394c4c10178a6fc0f07991acd Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Thu, 6 Feb 2020 19:04:44 +0700 Subject: [PATCH] TrailingComma: fix case of `when` without expression or property #KT-34744 #KT-36393 Fixed --- .../org/jetbrains/kotlin/idea/util/FormatterUtil.kt | 4 +++- .../trailingComma/whenEntry/WhenEntry.after.kt | 2 +- .../inspectionData/expected.xml | 12 ------------ .../inspectionData/expected.xml | 12 ------------ .../inspectionData/expected.xml | 12 ------------ 5 files changed, 4 insertions(+), 38 deletions(-) diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt index 0efdb45577d..ab6407f8811 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt @@ -22,8 +22,10 @@ import org.jetbrains.kotlin.idea.formatter.kotlinCustomSettings import org.jetbrains.kotlin.psi.KtDestructuringDeclaration import org.jetbrains.kotlin.psi.KtFunctionLiteral import org.jetbrains.kotlin.psi.KtWhenEntry +import org.jetbrains.kotlin.psi.KtWhenExpression import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset +import org.jetbrains.kotlin.utils.addToStdlib.cast /* * ASTBlock.node is nullable, this extension was introduced to minimize changes @@ -64,7 +66,7 @@ fun KtFunctionLiteral.needTrailingComma(settings: CodeStyleSettings?, checkExist fun KtWhenEntry.needTrailingComma(settings: CodeStyleSettings?, checkExistingTrailingComma: Boolean = true): Boolean = needTrailingComma( settings = settings, trailingComma = { if (checkExistingTrailingComma) trailingComma else null }, - additionalCheck = { !isElse }, + additionalCheck = { !isElse && parent.cast().leftParenthesis != null }, globalEndOffset = { arrow?.endOffset }, ) diff --git a/idea/testData/formatter/trailingComma/whenEntry/WhenEntry.after.kt b/idea/testData/formatter/trailingComma/whenEntry/WhenEntry.after.kt index 6060ecdacf5..74781ae6bfe 100644 --- a/idea/testData/formatter/trailingComma/whenEntry/WhenEntry.after.kt +++ b/idea/testData/formatter/trailingComma/whenEntry/WhenEntry.after.kt @@ -70,7 +70,7 @@ fun foo(x: Any) { } when { - x in coll, + x in coll -> { } diff --git a/idea/testData/inspections/trailingCommaOnWithCodeStyle/inspectionData/expected.xml b/idea/testData/inspections/trailingCommaOnWithCodeStyle/inspectionData/expected.xml index 847d066f7d4..14afedac6be 100644 --- a/idea/testData/inspections/trailingCommaOnWithCodeStyle/inspectionData/expected.xml +++ b/idea/testData/inspections/trailingCommaOnWithCodeStyle/inspectionData/expected.xml @@ -3443,16 +3443,4 @@ 8 1 - - WhenEntry.kt - 69 - testProject - light_idea_test_case - - Trailing comma recommendations - Missing trailing comma - l - 16 - 1 - \ No newline at end of file diff --git a/idea/testData/inspections/trailingCommaOnWithCodeStyleAndCallSite/inspectionData/expected.xml b/idea/testData/inspections/trailingCommaOnWithCodeStyleAndCallSite/inspectionData/expected.xml index a861d1d2a6e..b669f601828 100644 --- a/idea/testData/inspections/trailingCommaOnWithCodeStyleAndCallSite/inspectionData/expected.xml +++ b/idea/testData/inspections/trailingCommaOnWithCodeStyleAndCallSite/inspectionData/expected.xml @@ -2027,18 +2027,6 @@ 8 1 - - WhenEntry.kt - 69 - testProject - light_idea_test_case - - Trailing comma recommendations - Missing trailing comma - l - 16 - 1 - LambdaValueParameters.kt 4 diff --git a/idea/testData/inspections/trailingCommaOnWithoutCodeStyle/inspectionData/expected.xml b/idea/testData/inspections/trailingCommaOnWithoutCodeStyle/inspectionData/expected.xml index 847d066f7d4..14afedac6be 100644 --- a/idea/testData/inspections/trailingCommaOnWithoutCodeStyle/inspectionData/expected.xml +++ b/idea/testData/inspections/trailingCommaOnWithoutCodeStyle/inspectionData/expected.xml @@ -3443,16 +3443,4 @@ 8 1 - - WhenEntry.kt - 69 - testProject - light_idea_test_case - - Trailing comma recommendations - Missing trailing comma - l - 16 - 1 - \ No newline at end of file