diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt index a0bca584b30..34af9ff8c36 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -660,8 +660,9 @@ private val INDENT_RULES = arrayOf( .within(KtNodeTypes.BODY).notForType(KtNodeTypes.BLOCK) .set(Indent.getNormalIndent()), - strategy("For the entry in when") - .forType(KtNodeTypes.WHEN_ENTRY) + strategy("For WHEN content") + .within(KtNodeTypes.WHEN) + .notForType(RBRACE, LBRACE, WHEN_KEYWORD) .set(Indent.getNormalIndent()), strategy("For single statement in THEN and ELSE") diff --git a/idea/testData/formatter/When.after.inv.kt b/idea/testData/formatter/When.after.inv.kt index 35089c73333..09b6b5fdc5e 100644 --- a/idea/testData/formatter/When.after.inv.kt +++ b/idea/testData/formatter/When.after.inv.kt @@ -22,14 +22,14 @@ fun some(x: Any) { } when - (true) { + (true) { } when - (true) { + (true) { } diff --git a/idea/testData/formatter/When.after.kt b/idea/testData/formatter/When.after.kt index cc78bf0527f..91a96e03a53 100644 --- a/idea/testData/formatter/When.after.kt +++ b/idea/testData/formatter/When.after.kt @@ -22,14 +22,14 @@ fun some(x: Any) { } when - (true) { + (true) { } when - (true) { + (true) { } diff --git a/idea/testData/formatter/WhenComment.after.kt b/idea/testData/formatter/WhenComment.after.kt new file mode 100644 index 00000000000..173fe553f36 --- /dev/null +++ b/idea/testData/formatter/WhenComment.after.kt @@ -0,0 +1,56 @@ +fun foo(i: Int) { + when { + // line + 1 -> 2 + + // One line before + + 2 -> 3 + + // Many lines before + + + 3 -> 4 + + + /* Block */ + 4 -> 5 + + + /* + Block multiline + */ + 5 -> 6 + + /** Doc */ + 6 -> 7 + } + + when { // Assigned to entry + 1 -> 2 + } + + when { + // Line + else -> 8 + } + + when { + /* Block */ + else -> 8 + } + + when { + /** + * Doc + */ + else -> 8 + } + + when { + 1 -> + 2 // Two + else -> + 43 // 42 + } +} \ No newline at end of file diff --git a/idea/testData/formatter/WhenComment.kt b/idea/testData/formatter/WhenComment.kt new file mode 100644 index 00000000000..4d57605e523 --- /dev/null +++ b/idea/testData/formatter/WhenComment.kt @@ -0,0 +1,58 @@ +fun foo(i: Int) { + when { + // line + 1 -> 2 + + // One line before + + 2 -> 3 + + // Many lines before + + + + + 3 -> 4 + + + /* Block */ + 4 -> 5 + + + /* + Block multiline + */ + 5 -> 6 + + /** Doc */ + 6 -> 7 + } + + when { // Assigned to entry + 1 -> 2 + } + + when { + // Line + else -> 8 + } + + when { + /* Block */ + else -> 8 + } + + when { + /** + * Doc + */ + else -> 8 + } + + when { + 1 -> + 2 // Two + else -> + 43 // 42 + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/branched/introduceWhenSubject/lineBreaksAndComments.kt.after b/idea/testData/inspectionsLocal/branched/introduceWhenSubject/lineBreaksAndComments.kt.after index 2467d94fa1d..917144f2fb7 100644 --- a/idea/testData/inspectionsLocal/branched/introduceWhenSubject/lineBreaksAndComments.kt.after +++ b/idea/testData/inspectionsLocal/branched/introduceWhenSubject/lineBreaksAndComments.kt.after @@ -4,10 +4,10 @@ fun test(obj: Any): String { return when (obj) { is String -> "string" // return "string" - // it's an Int + // it's an Int is Int -> "int" - // otherwise + // otherwise else -> "unknown" } } diff --git a/idea/testData/intentions/branched/when/eliminateSubject/lineBreaksAndComments.kt.after b/idea/testData/intentions/branched/when/eliminateSubject/lineBreaksAndComments.kt.after index 32b893cfffe..59511617583 100644 --- a/idea/testData/intentions/branched/when/eliminateSubject/lineBreaksAndComments.kt.after +++ b/idea/testData/intentions/branched/when/eliminateSubject/lineBreaksAndComments.kt.after @@ -4,10 +4,10 @@ fun test(obj: Any): String { return when { obj is String -> "string" // return "string" - // it's an Int + // it's an Int obj is Int -> "int" - // otherwise + // otherwise else -> "unknown" } } diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index 077206318ed..71ee403ecac 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -741,6 +741,11 @@ public class FormatterTestGenerated extends AbstractFormatterTest { runTest("idea/testData/formatter/WhenBlockBlankLines.after.kt"); } + @TestMetadata("WhenComment.after.kt") + public void testWhenComment() throws Exception { + runTest("idea/testData/formatter/WhenComment.after.kt"); + } + @TestMetadata("WhenEntryExpr.after.kt") public void testWhenEntryExpr() throws Exception { runTest("idea/testData/formatter/WhenEntryExpr.after.kt");