diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt index 0c2aef1f6b9..54e91f397cd 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -220,7 +220,6 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing afterInside(ANNOTATION_ENTRY, ANNOTATED_EXPRESSION).spaces(1) before(SEMICOLON).spaces(0) - after(SEMICOLON).spaces(1) beforeInside(INITIALIZER_LIST, ENUM_ENTRY).spaces(0) @@ -323,6 +322,17 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing Spacing.createKeepingFirstColumnSpacing(0, Integer.MAX_VALUE, settings.KEEP_LINE_BREAKS, kotlinCommonSettings.KEEP_BLANK_LINES_IN_CODE)) } + // Add space after a semicolon if there is another child at the same line + inPosition(left = SEMICOLON).customRule { parent, left, right -> + val nodeAfterLeft = left.node.treeNext + if (nodeAfterLeft is PsiWhiteSpace && !nodeAfterLeft.textContains('\n')) { + Spacing.createSpacing(1, 1, 0, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE) + } + else { + null + } + } + inPosition(parent = IF, right = THEN).customRule(leftBraceRuleIfBlockIsWrapped) inPosition(parent = IF, right = ELSE).customRule(leftBraceRuleIfBlockIsWrapped) diff --git a/idea/testData/formatter/Semicolon.after.kt b/idea/testData/formatter/Semicolon.after.kt index 34f18f48f8c..199f0c2aa91 100644 --- a/idea/testData/formatter/Semicolon.after.kt +++ b/idea/testData/formatter/Semicolon.after.kt @@ -1,3 +1,6 @@ fun foo() { ""; "" + + ""; +// var = 1 } \ No newline at end of file diff --git a/idea/testData/formatter/Semicolon.kt b/idea/testData/formatter/Semicolon.kt index a10d7b66b0f..737bf8e9146 100644 --- a/idea/testData/formatter/Semicolon.kt +++ b/idea/testData/formatter/Semicolon.kt @@ -1,3 +1,6 @@ fun foo() { "" ; "" + + ""; +// var = 1 } \ No newline at end of file