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 a0af0c55bd4..4e749ec08b9 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -178,7 +178,7 @@ abstract class KotlinCommonBlock( if (node.wrapForFirstCallInChainIsAllowed && node.receiverIsCall()) Wrap.createWrap( settings.kotlinCommonSettings.METHOD_CALL_CHAIN_WRAP, - true /* wrapFirstElement */, + true, /* wrapFirstElement */ ) else null @@ -339,7 +339,7 @@ abstract class KotlinCommonBlock( null, ) - TRY -> ChildAttributes(Indent.getNoneIndent(), null) + TRY, CATCH, FINALLY -> ChildAttributes(Indent.getNoneIndent(), null) in QUALIFIED_EXPRESSIONS -> ChildAttributes(Indent.getContinuationWithoutFirstIndent(), null) @@ -924,11 +924,6 @@ private val INDENT_RULES = arrayOf( .within(BODY).notForType(BLOCK) .set(Indent.getNormalIndent()), - strategy("For WHEN content") - .within(WHEN) - .notForType(RBRACE, LBRACE, WHEN_KEYWORD) - .set(Indent.getNormalIndent()), - strategy("For single statement in THEN and ELSE") .within(THEN, ELSE).notForType(BLOCK) .set(Indent.getNormalIndent()), @@ -1038,21 +1033,26 @@ private val INDENT_RULES = arrayOf( strategy("Opening parenthesis for conditions") .forType(LPAR) - .within(IF, WHEN_ENTRY, WHILE, DO_WHILE) + .within(IF, WHEN_ENTRY, WHILE, DO_WHILE, FOR, WHEN) .set(Indent.getContinuationWithoutFirstIndent(true)), strategy("Closing parenthesis for conditions") .forType(RPAR) .forElement { node -> !hasErrorElementBefore(node) } - .within(IF, WHEN_ENTRY, WHILE, DO_WHILE) + .within(IF, WHEN_ENTRY, WHILE, DO_WHILE, FOR, WHEN) .set(Indent.getNoneIndent()), strategy("Closing parenthesis for incomplete conditions") .forType(RPAR) .forElement { node -> hasErrorElementBefore(node) } - .within(IF, WHEN_ENTRY, WHILE, DO_WHILE) + .within(IF, WHEN_ENTRY, WHILE, DO_WHILE, FOR, WHEN) .set(Indent.getContinuationWithoutFirstIndent()), + strategy("For WHEN content") + .within(WHEN) + .notForType(RBRACE, LBRACE, WHEN_KEYWORD) + .set(Indent.getNormalIndent()), + strategy("KDoc comment indent") .within(KDOC_CONTENT) .forType(KDocTokens.LEADING_ASTERISK, KDocTokens.END) diff --git a/idea/line-indent-provider/src/org/jetbrains/kotlin/idea/formatter/lineIndent/KotlinLikeLangLineIndentProvider.kt b/idea/line-indent-provider/src/org/jetbrains/kotlin/idea/formatter/lineIndent/KotlinLikeLangLineIndentProvider.kt index 30fe761827b..af2f9ba810f 100644 --- a/idea/line-indent-provider/src/org/jetbrains/kotlin/idea/formatter/lineIndent/KotlinLikeLangLineIndentProvider.kt +++ b/idea/line-indent-provider/src/org/jetbrains/kotlin/idea/formatter/lineIndent/KotlinLikeLangLineIndentProvider.kt @@ -63,42 +63,120 @@ abstract class KotlinLikeLangLineIndentProvider : JavaLikeLangLineIndentProvider // println(debugInfo(currentPosition)) // ~~~ TESTING ~~~ - currentPosition.beforeOptionalMix(Whitespace, LineComment) - .takeIf { it.isAt(TemplateEntryOpen) } - ?.let { templateEntryPosition -> - val baseLineOffset = templateEntryPosition.startOffset + val before = currentPosition.beforeWhitespacesAndComments() + when { + before.isAt(TemplateEntryOpen) -> { + val baseLineOffset = before.startOffset return factory.createIndentCalculator(Indent.getNormalIndent()) { baseLineOffset } } - currentPosition.afterOptionalMix(Whitespace, LineComment) + before.isAtAnyOf(TryKeyword, FinallyKeyword) -> return factory.createIndentCalculator( + Indent.getNoneIndent(), + IndentCalculator.LINE_BEFORE, + ) + + before.isInControlFlowStatement() -> { + val afterWhitespacesAndComments = currentPosition.afterWhitespacesAndComments() + return factory.createIndentCalculator( + when { + afterWhitespacesAndComments.isAt(LeftParenthesis) -> Indent.getContinuationIndent() + afterWhitespacesAndComments.isAtAnyOf(BlockOpeningBrace, Arrow) -> Indent.getNoneIndent() + else -> Indent.getNormalIndent() + }, + IndentCalculator.LINE_BEFORE, + ) + } + } + + currentPosition.afterWhitespacesAndComments() .takeIf { it.isAt(TemplateEntryClose) } ?.let { templateEntryPosition -> - val baseLineOffset = templateEntryPosition.beforeParentheses(TemplateEntryOpen, TemplateEntryClose).startOffset val indent = if (currentPosition.hasEmptyLineAfter(offset)) Indent.getNormalIndent() else Indent.getNoneIndent() + templateEntryPosition.moveBeforeParentheses(TemplateEntryOpen, TemplateEntryClose) + val baseLineOffset = templateEntryPosition.startOffset return factory.createIndentCalculator(indent) { baseLineOffset } } return null } + private fun SemanticEditorPosition.beforeWhitespacesAndComments(): SemanticEditorPosition = beforeOptionalMix( + Whitespace, + LineComment, + BlockComment, + ) + + private fun SemanticEditorPosition.afterWhitespacesAndComments(): SemanticEditorPosition = afterOptionalMix( + Whitespace, + LineComment, + BlockComment, + ) + + private fun SemanticEditorPosition.moveBeforeWhitespacesAndComments(): SemanticEditorPosition = apply { + moveBeforeOptionalMix(Whitespace, LineComment, BlockComment) + } + + private fun SemanticEditorPosition.isInControlFlowStatement(): Boolean = with(copy()) { + if (isAt(BlockOpeningBrace)) { + moveBefore() + moveBeforeParentheses(LeftParenthesis, RightParenthesis) + moveBeforeWhitespacesAndComments() + } + + if (currElement in CONTROL_FLOW_CONSTRUCTIONS) return true + if (!isAt(RightParenthesis)) return false + + moveBeforeParentheses(LeftParenthesis, RightParenthesis) + moveBeforeWhitespacesAndComments() + + return currElement in CONTROL_FLOW_CONSTRUCTIONS + } + enum class KotlinElement : SemanticEditorPosition.SyntaxElement { TemplateEntryOpen, TemplateEntryClose, Arrow, WhenKeyword, + CatchKeyword, + FinallyKeyword, + WhileKeyword, + RegularStringPart, } companion object { - private val SYNTAX_MAP: LinkedHashMap = linkedMapOf( + private val SYNTAX_MAP: Map = hashMapOf( KtTokens.WHITE_SPACE to Whitespace, KtTokens.LONG_TEMPLATE_ENTRY_START to TemplateEntryOpen, KtTokens.LONG_TEMPLATE_ENTRY_END to TemplateEntryClose, KtTokens.EOL_COMMENT to LineComment, + KtTokens.BLOCK_COMMENT to BlockComment, KtTokens.ARROW to Arrow, KtTokens.LBRACE to BlockOpeningBrace, KtTokens.RBRACE to BlockClosingBrace, + KtTokens.LPAR to LeftParenthesis, + KtTokens.RPAR to RightParenthesis, + KtTokens.IF_KEYWORD to IfKeyword, KtTokens.ELSE_KEYWORD to ElseKeyword, KtTokens.WHEN_KEYWORD to WhenKeyword, + KtTokens.TRY_KEYWORD to TryKeyword, + KtTokens.CATCH_KEYWORD to CatchKeyword, + KtTokens.FINALLY_KEYWORD to FinallyKeyword, + KtTokens.WHILE_KEYWORD to WhileKeyword, + KtTokens.DO_KEYWORD to DoKeyword, + KtTokens.FOR_KEYWORD to ForKeyword, + KtTokens.REGULAR_STRING_PART to RegularStringPart, + ) + + private val CONTROL_FLOW_CONSTRUCTIONS: HashSet = hashSetOf( + WhenKeyword, + IfKeyword, + ElseKeyword, + DoKeyword, + WhileKeyword, + ForKeyword, + TryKeyword, + CatchKeyword, + FinallyKeyword, ) } } \ No newline at end of file diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceTypingIndentationTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceTypingIndentationTestGenerated.java index ff7056e4e64..70918c5d218 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceTypingIndentationTestGenerated.java +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceTypingIndentationTestGenerated.java @@ -78,6 +78,21 @@ public class PerformanceTypingIndentationTestGenerated extends AbstractPerforman runTest("idea/testData/indentationOnNewline/BinaryWithTypeExpressions.kt"); } + @TestMetadata("Catch.kt") + public void testCatch() throws Exception { + runTest("idea/testData/indentationOnNewline/Catch.kt"); + } + + @TestMetadata("Catch2.kt") + public void testCatch2() throws Exception { + runTest("idea/testData/indentationOnNewline/Catch2.kt"); + } + + @TestMetadata("Catch3.kt") + public void testCatch3() throws Exception { + runTest("idea/testData/indentationOnNewline/Catch3.kt"); + } + @TestMetadata("ConsecutiveCallsAfterDot.kt") public void testConsecutiveCallsAfterDot() throws Exception { runTest("idea/testData/indentationOnNewline/ConsecutiveCallsAfterDot.kt"); @@ -93,21 +108,106 @@ public class PerformanceTypingIndentationTestGenerated extends AbstractPerforman runTest("idea/testData/indentationOnNewline/ConsecutiveCallsInSafeCallsEnd.kt"); } + @TestMetadata("Do2.kt") + public void testDo2() throws Exception { + runTest("idea/testData/indentationOnNewline/Do2.kt"); + } + @TestMetadata("DoInFun.kt") public void testDoInFun() throws Exception { runTest("idea/testData/indentationOnNewline/DoInFun.kt"); } + @TestMetadata("DoWithBraces.kt") + public void testDoWithBraces() throws Exception { + runTest("idea/testData/indentationOnNewline/DoWithBraces.kt"); + } + + @TestMetadata("DoWithBraces2.kt") + public void testDoWithBraces2() throws Exception { + runTest("idea/testData/indentationOnNewline/DoWithBraces2.kt"); + } + + @TestMetadata("ElseIf.kt") + public void testElseIf() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseIf.kt"); + } + + @TestMetadata("ElseInWhenWithOption.kt") + public void testElseInWhenWithOption() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseInWhenWithOption.kt"); + } + + @TestMetadata("ElseInWhenWithoutOption.kt") + public void testElseInWhenWithoutOption() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseInWhenWithoutOption.kt"); + } + + @TestMetadata("ElseWithBrace.kt") + public void testElseWithBrace() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithBrace.kt"); + } + + @TestMetadata("ElseWithBraceAndComment.kt") + public void testElseWithBraceAndComment() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithBraceAndComment.kt"); + } + + @TestMetadata("ElseWithBraceAndComment2.kt") + public void testElseWithBraceAndComment2() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithBraceAndComment2.kt"); + } + + @TestMetadata("ElseWithoutBrace.kt") + public void testElseWithoutBrace() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithoutBrace.kt"); + } + + @TestMetadata("ElseWithoutBrace2.kt") + public void testElseWithoutBrace2() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithoutBrace2.kt"); + } + @TestMetadata("EmptyParameters.kt") public void testEmptyParameters() throws Exception { runTest("idea/testData/indentationOnNewline/EmptyParameters.kt"); } + @TestMetadata("Finally.kt") + public void testFinally() throws Exception { + runTest("idea/testData/indentationOnNewline/Finally.kt"); + } + + @TestMetadata("Finally2.kt") + public void testFinally2() throws Exception { + runTest("idea/testData/indentationOnNewline/Finally2.kt"); + } + + @TestMetadata("Finally3.kt") + public void testFinally3() throws Exception { + runTest("idea/testData/indentationOnNewline/Finally3.kt"); + } + @TestMetadata("For.kt") public void testFor() throws Exception { runTest("idea/testData/indentationOnNewline/For.kt"); } + @TestMetadata("ForWithBlock.kt") + public void testForWithBlock() throws Exception { + runTest("idea/testData/indentationOnNewline/ForWithBlock.kt"); + } + + @TestMetadata("ForWithCondition.kt") + public void testForWithCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/ForWithCondition.kt"); + } + + @TestMetadata("ForWithoutCondition.kt") + public void testForWithoutCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/ForWithoutCondition.kt"); + } + @TestMetadata("FunctionBlock.kt") public void testFunctionBlock() throws Exception { runTest("idea/testData/indentationOnNewline/FunctionBlock.kt"); @@ -123,6 +223,36 @@ public class PerformanceTypingIndentationTestGenerated extends AbstractPerforman runTest("idea/testData/indentationOnNewline/If.kt"); } + @TestMetadata("IfBeforeCondition.kt") + public void testIfBeforeCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition.kt"); + } + + @TestMetadata("IfBeforeCondition2.kt") + public void testIfBeforeCondition2() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition2.kt"); + } + + @TestMetadata("IfBeforeCondition3.kt") + public void testIfBeforeCondition3() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition3.kt"); + } + + @TestMetadata("IfBeforeCondition4.kt") + public void testIfBeforeCondition4() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition4.kt"); + } + + @TestMetadata("IfWithBraces.kt") + public void testIfWithBraces() throws Exception { + runTest("idea/testData/indentationOnNewline/IfWithBraces.kt"); + } + + @TestMetadata("IfWithBraces2.kt") + public void testIfWithBraces2() throws Exception { + runTest("idea/testData/indentationOnNewline/IfWithBraces2.kt"); + } + @TestMetadata("InBinaryExpressionInMiddle.kt") public void testInBinaryExpressionInMiddle() throws Exception { runTest("idea/testData/indentationOnNewline/InBinaryExpressionInMiddle.kt"); @@ -398,11 +528,61 @@ public class PerformanceTypingIndentationTestGenerated extends AbstractPerforman runTest("idea/testData/indentationOnNewline/TemplateEntryOpenWithoutContent5.kt"); } + @TestMetadata("Try.kt") + public void testTry() throws Exception { + runTest("idea/testData/indentationOnNewline/Try.kt"); + } + + @TestMetadata("Try2.kt") + public void testTry2() throws Exception { + runTest("idea/testData/indentationOnNewline/Try2.kt"); + } + + @TestMetadata("WhenWithCondition.kt") + public void testWhenWithCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhenWithCondition.kt"); + } + + @TestMetadata("WhenWithCondition2.kt") + public void testWhenWithCondition2() throws Exception { + runTest("idea/testData/indentationOnNewline/WhenWithCondition2.kt"); + } + + @TestMetadata("WhenWithoutCondition.kt") + public void testWhenWithoutCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhenWithoutCondition.kt"); + } + @TestMetadata("While.kt") public void testWhile() throws Exception { runTest("idea/testData/indentationOnNewline/While.kt"); } + @TestMetadata("While2.kt") + public void testWhile2() throws Exception { + runTest("idea/testData/indentationOnNewline/While2.kt"); + } + + @TestMetadata("While3.kt") + public void testWhile3() throws Exception { + runTest("idea/testData/indentationOnNewline/While3.kt"); + } + + @TestMetadata("WhileWithBlock.kt") + public void testWhileWithBlock() throws Exception { + runTest("idea/testData/indentationOnNewline/WhileWithBlock.kt"); + } + + @TestMetadata("WhileWithCondition.kt") + public void testWhileWithCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhileWithCondition.kt"); + } + + @TestMetadata("WhileWithoutCondition.kt") + public void testWhileWithoutCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhileWithoutCondition.kt"); + } + @TestMetadata("idea/testData/indentationOnNewline/script") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/idea/testData/formatter/ForSpacing.after.kt b/idea/testData/formatter/ForSpacing.after.kt index 67e74cdc8f9..0528c8d156a 100644 --- a/idea/testData/formatter/ForSpacing.after.kt +++ b/idea/testData/formatter/ForSpacing.after.kt @@ -4,11 +4,11 @@ fun f() { for (i in array(1, 2)) { } for - (i in array(1, 2)) { + (i in array(1, 2)) { } for - (i in array(1, 2)) { + (i in array(1, 2)) { } for (i in array(1, 2)) continue diff --git a/idea/testData/formatter/KeepLineBreak.after.inv.kt b/idea/testData/formatter/KeepLineBreak.after.inv.kt index d72520e4ae9..2be73fab88e 100644 --- a/idea/testData/formatter/KeepLineBreak.after.inv.kt +++ b/idea/testData/formatter/KeepLineBreak.after.inv.kt @@ -10,7 +10,7 @@ fun foo() { } for - (i in 0..42) { + (i in 0..42) { } } diff --git a/idea/testData/formatter/When.after.inv.kt b/idea/testData/formatter/When.after.inv.kt index 3d997ce1eda..3ec928279a2 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 c1a3163c4bc..5b6c745b29f 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/WhenWithVariable.after.kt b/idea/testData/formatter/WhenWithVariable.after.kt index 762b32f686a..1a676bdce53 100644 --- a/idea/testData/formatter/WhenWithVariable.after.kt +++ b/idea/testData/formatter/WhenWithVariable.after.kt @@ -12,7 +12,7 @@ fun test() { } when (var i = 2 - ) { + ) { } diff --git a/idea/testData/indentationOnNewline/Catch.after.kt b/idea/testData/indentationOnNewline/Catch.after.kt new file mode 100644 index 00000000000..3ab9f8087d8 --- /dev/null +++ b/idea/testData/indentationOnNewline/Catch.after.kt @@ -0,0 +1,6 @@ +fun a() = try { + // do smth +} catch (e: Exception) + + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Catch.kt b/idea/testData/indentationOnNewline/Catch.kt new file mode 100644 index 00000000000..996457726ea --- /dev/null +++ b/idea/testData/indentationOnNewline/Catch.kt @@ -0,0 +1,5 @@ +fun a() = try { + // do smth +} catch (e: Exception) + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Catch2.after.kt b/idea/testData/indentationOnNewline/Catch2.after.kt new file mode 100644 index 00000000000..d874e971304 --- /dev/null +++ b/idea/testData/indentationOnNewline/Catch2.after.kt @@ -0,0 +1,8 @@ +fun a() = try { + // do smth +} catch (e: Exception) { + + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Catch2.kt b/idea/testData/indentationOnNewline/Catch2.kt new file mode 100644 index 00000000000..b3eafffbf1e --- /dev/null +++ b/idea/testData/indentationOnNewline/Catch2.kt @@ -0,0 +1,7 @@ +fun a() = try { + // do smth +} catch (e: Exception) { + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Catch3.after.kt b/idea/testData/indentationOnNewline/Catch3.after.kt new file mode 100644 index 00000000000..a8e65cbf1e5 --- /dev/null +++ b/idea/testData/indentationOnNewline/Catch3.after.kt @@ -0,0 +1,8 @@ +fun a() = try { + // do smth +} catch + (e: Exception) { + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Catch3.kt b/idea/testData/indentationOnNewline/Catch3.kt new file mode 100644 index 00000000000..1d2addf257a --- /dev/null +++ b/idea/testData/indentationOnNewline/Catch3.kt @@ -0,0 +1,7 @@ +fun a() = try { + // do smth +} catch (e: Exception) { + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Do2.after.kt b/idea/testData/indentationOnNewline/Do2.after.kt new file mode 100644 index 00000000000..b6d576f789a --- /dev/null +++ b/idea/testData/indentationOnNewline/Do2.after.kt @@ -0,0 +1,4 @@ +fun some() { + do + println() while (true) +} diff --git a/idea/testData/indentationOnNewline/Do2.kt b/idea/testData/indentationOnNewline/Do2.kt new file mode 100644 index 00000000000..aeebe7d9184 --- /dev/null +++ b/idea/testData/indentationOnNewline/Do2.kt @@ -0,0 +1,3 @@ +fun some() { + do println() while (true) +} diff --git a/idea/testData/indentationOnNewline/DoInFun.after.kt b/idea/testData/indentationOnNewline/DoInFun.after.kt index fdef730523b..044b1f233ba 100644 --- a/idea/testData/indentationOnNewline/DoInFun.after.kt +++ b/idea/testData/indentationOnNewline/DoInFun.after.kt @@ -2,5 +2,3 @@ fun some() { do } - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/DoInFun.kt b/idea/testData/indentationOnNewline/DoInFun.kt index bed9734f378..8db488f6b2e 100644 --- a/idea/testData/indentationOnNewline/DoInFun.kt +++ b/idea/testData/indentationOnNewline/DoInFun.kt @@ -1,5 +1,3 @@ fun some() { do } - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/DoWithBraces.after.kt b/idea/testData/indentationOnNewline/DoWithBraces.after.kt new file mode 100644 index 00000000000..290e755c00a --- /dev/null +++ b/idea/testData/indentationOnNewline/DoWithBraces.after.kt @@ -0,0 +1,6 @@ +fun some() { + do + { + + } while (true) +} diff --git a/idea/testData/indentationOnNewline/DoWithBraces.kt b/idea/testData/indentationOnNewline/DoWithBraces.kt new file mode 100644 index 00000000000..9899170ad5a --- /dev/null +++ b/idea/testData/indentationOnNewline/DoWithBraces.kt @@ -0,0 +1,5 @@ +fun some() { + do { + + } while (true) +} diff --git a/idea/testData/indentationOnNewline/DoWithBraces2.after.kt b/idea/testData/indentationOnNewline/DoWithBraces2.after.kt new file mode 100644 index 00000000000..e09e55a84e3 --- /dev/null +++ b/idea/testData/indentationOnNewline/DoWithBraces2.after.kt @@ -0,0 +1,9 @@ +fun some() { + do + + + + { + + } while (true) +} diff --git a/idea/testData/indentationOnNewline/DoWithBraces2.kt b/idea/testData/indentationOnNewline/DoWithBraces2.kt new file mode 100644 index 00000000000..37385d06719 --- /dev/null +++ b/idea/testData/indentationOnNewline/DoWithBraces2.kt @@ -0,0 +1,8 @@ +fun some() { + do + + + { + + } while (true) +} diff --git a/idea/testData/indentationOnNewline/ElseIf.after.kt b/idea/testData/indentationOnNewline/ElseIf.after.kt new file mode 100644 index 00000000000..94db896a9cd --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseIf.after.kt @@ -0,0 +1,7 @@ +fun some() { + if (true) + true + else + if (false) + false +} diff --git a/idea/testData/indentationOnNewline/ElseIf.kt b/idea/testData/indentationOnNewline/ElseIf.kt new file mode 100644 index 00000000000..a5c09fd8d65 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseIf.kt @@ -0,0 +1,6 @@ +fun some() { + if (true) + true + else if (false) + false +} diff --git a/idea/testData/indentationOnNewline/ElseInWhenWithOption.after.kt b/idea/testData/indentationOnNewline/ElseInWhenWithOption.after.kt new file mode 100644 index 00000000000..9a3cd9d9fab --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseInWhenWithOption.after.kt @@ -0,0 +1,9 @@ +fun some() { + when { + true && true -> + else + -> Unit + } +} + +// SET_TRUE: ALIGN_IN_COLUMNS_CASE_BRANCH \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ElseInWhenWithOption.kt b/idea/testData/indentationOnNewline/ElseInWhenWithOption.kt new file mode 100644 index 00000000000..0dd61cf71c2 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseInWhenWithOption.kt @@ -0,0 +1,8 @@ +fun some() { + when { + true && true -> + else -> Unit + } +} + +// SET_TRUE: ALIGN_IN_COLUMNS_CASE_BRANCH \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ElseInWhenWithoutOption.after.kt b/idea/testData/indentationOnNewline/ElseInWhenWithoutOption.after.kt new file mode 100644 index 00000000000..8747989153b --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseInWhenWithoutOption.after.kt @@ -0,0 +1,9 @@ +fun some() { + when { + true && false -> + else + -> Unit + } +} + +// SET_FALSE: ALIGN_IN_COLUMNS_CASE_BRANCH \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ElseInWhenWithoutOption.kt b/idea/testData/indentationOnNewline/ElseInWhenWithoutOption.kt new file mode 100644 index 00000000000..60b6f34a8c8 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseInWhenWithoutOption.kt @@ -0,0 +1,8 @@ +fun some() { + when { + true && false -> + else -> Unit + } +} + +// SET_FALSE: ALIGN_IN_COLUMNS_CASE_BRANCH \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ElseWithBrace.after.kt b/idea/testData/indentationOnNewline/ElseWithBrace.after.kt new file mode 100644 index 00000000000..d3779e014d8 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithBrace.after.kt @@ -0,0 +1,8 @@ +fun some() { + if (true) + true + else + { + + } +} diff --git a/idea/testData/indentationOnNewline/ElseWithBrace.kt b/idea/testData/indentationOnNewline/ElseWithBrace.kt new file mode 100644 index 00000000000..9c76f735b04 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithBrace.kt @@ -0,0 +1,7 @@ +fun some() { + if (true) + true + else { + + } +} diff --git a/idea/testData/indentationOnNewline/ElseWithBraceAndComment.after.kt b/idea/testData/indentationOnNewline/ElseWithBraceAndComment.after.kt new file mode 100644 index 00000000000..d78b790c05b --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithBraceAndComment.after.kt @@ -0,0 +1,9 @@ +fun some() { + if (true) + true + else + // smth + { + + } +} diff --git a/idea/testData/indentationOnNewline/ElseWithBraceAndComment.kt b/idea/testData/indentationOnNewline/ElseWithBraceAndComment.kt new file mode 100644 index 00000000000..4925a65a1b9 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithBraceAndComment.kt @@ -0,0 +1,8 @@ +fun some() { + if (true) + true + else // smth + { + + } +} diff --git a/idea/testData/indentationOnNewline/ElseWithBraceAndComment2.after.kt b/idea/testData/indentationOnNewline/ElseWithBraceAndComment2.after.kt new file mode 100644 index 00000000000..8eaba835e49 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithBraceAndComment2.after.kt @@ -0,0 +1,11 @@ +fun some() { + if (true) + true + else // smth + + { + + } +} + +// IGNORE_FORMATTER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ElseWithBraceAndComment2.kt b/idea/testData/indentationOnNewline/ElseWithBraceAndComment2.kt new file mode 100644 index 00000000000..8189c30c456 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithBraceAndComment2.kt @@ -0,0 +1,10 @@ +fun some() { + if (true) + true + else // smth + { + + } +} + +// IGNORE_FORMATTER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ElseWithoutBrace.after.kt b/idea/testData/indentationOnNewline/ElseWithoutBrace.after.kt new file mode 100644 index 00000000000..6e8841b8fde --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithoutBrace.after.kt @@ -0,0 +1,6 @@ +fun some() { + if (true) + true + else + +} diff --git a/idea/testData/indentationOnNewline/ElseWithoutBrace.kt b/idea/testData/indentationOnNewline/ElseWithoutBrace.kt new file mode 100644 index 00000000000..271fdf2d47a --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithoutBrace.kt @@ -0,0 +1,5 @@ +fun some() { + if (true) + true + else +} diff --git a/idea/testData/indentationOnNewline/ElseWithoutBrace2.after.kt b/idea/testData/indentationOnNewline/ElseWithoutBrace2.after.kt new file mode 100644 index 00000000000..afb56037186 --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithoutBrace2.after.kt @@ -0,0 +1,7 @@ +fun some() { + if (true) + true + else + + +} diff --git a/idea/testData/indentationOnNewline/ElseWithoutBrace2.kt b/idea/testData/indentationOnNewline/ElseWithoutBrace2.kt new file mode 100644 index 00000000000..6e8841b8fde --- /dev/null +++ b/idea/testData/indentationOnNewline/ElseWithoutBrace2.kt @@ -0,0 +1,6 @@ +fun some() { + if (true) + true + else + +} diff --git a/idea/testData/indentationOnNewline/Finally.after.kt b/idea/testData/indentationOnNewline/Finally.after.kt new file mode 100644 index 00000000000..6570837ac00 --- /dev/null +++ b/idea/testData/indentationOnNewline/Finally.after.kt @@ -0,0 +1,8 @@ +fun a() = try { + // do smth +} finally +{ + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Finally.kt b/idea/testData/indentationOnNewline/Finally.kt new file mode 100644 index 00000000000..8b64b315f58 --- /dev/null +++ b/idea/testData/indentationOnNewline/Finally.kt @@ -0,0 +1,7 @@ +fun a() = try { + // do smth +} finally { + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Finally2.after.kt b/idea/testData/indentationOnNewline/Finally2.after.kt new file mode 100644 index 00000000000..787f2eab810 --- /dev/null +++ b/idea/testData/indentationOnNewline/Finally2.after.kt @@ -0,0 +1,10 @@ +fun a() { + try { + dos() + } finally { + + a + } +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Finally2.kt b/idea/testData/indentationOnNewline/Finally2.kt new file mode 100644 index 00000000000..88bf9c031f6 --- /dev/null +++ b/idea/testData/indentationOnNewline/Finally2.kt @@ -0,0 +1,9 @@ +fun a() { + try { + dos() + } finally { + a + } +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Finally3.after.kt b/idea/testData/indentationOnNewline/Finally3.after.kt new file mode 100644 index 00000000000..c4531b0a8ec --- /dev/null +++ b/idea/testData/indentationOnNewline/Finally3.after.kt @@ -0,0 +1,8 @@ +fun a() { + try { + dos() + } finally + +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Finally3.kt b/idea/testData/indentationOnNewline/Finally3.kt new file mode 100644 index 00000000000..37b45801323 --- /dev/null +++ b/idea/testData/indentationOnNewline/Finally3.kt @@ -0,0 +1,7 @@ +fun a() { + try { + dos() + } finally +} + +// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/For.after.kt b/idea/testData/indentationOnNewline/For.after.kt index 9c83bb18a2a..9567e8be1af 100644 --- a/idea/testData/indentationOnNewline/For.after.kt +++ b/idea/testData/indentationOnNewline/For.after.kt @@ -1,5 +1,3 @@ fun some() { for (var i in 1..10) - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/For.kt b/idea/testData/indentationOnNewline/For.kt index 117356346d5..5c1084fe987 100644 --- a/idea/testData/indentationOnNewline/For.kt +++ b/idea/testData/indentationOnNewline/For.kt @@ -1,4 +1,2 @@ fun some() { for (var i in 1..10) - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/ForWithBlock.after.kt b/idea/testData/indentationOnNewline/ForWithBlock.after.kt new file mode 100644 index 00000000000..e5ce1743255 --- /dev/null +++ b/idea/testData/indentationOnNewline/ForWithBlock.after.kt @@ -0,0 +1,5 @@ +fun some() { + for (var i in 1..10) + { + } +} diff --git a/idea/testData/indentationOnNewline/ForWithBlock.kt b/idea/testData/indentationOnNewline/ForWithBlock.kt new file mode 100644 index 00000000000..4bc4ac94561 --- /dev/null +++ b/idea/testData/indentationOnNewline/ForWithBlock.kt @@ -0,0 +1,4 @@ +fun some() { + for (var i in 1..10) { + } +} diff --git a/idea/testData/indentationOnNewline/ForWithCondition.after.kt b/idea/testData/indentationOnNewline/ForWithCondition.after.kt new file mode 100644 index 00000000000..3653bade696 --- /dev/null +++ b/idea/testData/indentationOnNewline/ForWithCondition.after.kt @@ -0,0 +1,6 @@ +fun some() { + for + (var i in 1..10) { + + } +} diff --git a/idea/testData/indentationOnNewline/ForWithCondition.kt b/idea/testData/indentationOnNewline/ForWithCondition.kt new file mode 100644 index 00000000000..0c33f11533a --- /dev/null +++ b/idea/testData/indentationOnNewline/ForWithCondition.kt @@ -0,0 +1,5 @@ +fun some() { + for (var i in 1..10) { + + } +} diff --git a/idea/testData/indentationOnNewline/ForWithoutCondition.after.kt b/idea/testData/indentationOnNewline/ForWithoutCondition.after.kt new file mode 100644 index 00000000000..2dad703bb28 --- /dev/null +++ b/idea/testData/indentationOnNewline/ForWithoutCondition.after.kt @@ -0,0 +1,4 @@ +fun some() { + for + +} diff --git a/idea/testData/indentationOnNewline/ForWithoutCondition.kt b/idea/testData/indentationOnNewline/ForWithoutCondition.kt new file mode 100644 index 00000000000..7e9cf58460c --- /dev/null +++ b/idea/testData/indentationOnNewline/ForWithoutCondition.kt @@ -0,0 +1,3 @@ +fun some() { + for +} diff --git a/idea/testData/indentationOnNewline/If.after.kt b/idea/testData/indentationOnNewline/If.after.kt index e53b8d3ce55..18cebb29eba 100644 --- a/idea/testData/indentationOnNewline/If.after.kt +++ b/idea/testData/indentationOnNewline/If.after.kt @@ -2,5 +2,3 @@ fun some() { if (3 > 5) } - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/If.kt b/idea/testData/indentationOnNewline/If.kt index 8e6a5f2012b..97c15495c85 100644 --- a/idea/testData/indentationOnNewline/If.kt +++ b/idea/testData/indentationOnNewline/If.kt @@ -1,5 +1,3 @@ fun some() { if (3 > 5) } - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition.after.kt b/idea/testData/indentationOnNewline/IfBeforeCondition.after.kt new file mode 100644 index 00000000000..ae34ff321b6 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition.after.kt @@ -0,0 +1,6 @@ +fun some() { + if + (3 > 5) { + + } +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition.kt b/idea/testData/indentationOnNewline/IfBeforeCondition.kt new file mode 100644 index 00000000000..d962371f88d --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition.kt @@ -0,0 +1,5 @@ +fun some() { + if (3 > 5) { + + } +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition2.after.kt b/idea/testData/indentationOnNewline/IfBeforeCondition2.after.kt new file mode 100644 index 00000000000..f6c265f5f74 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition2.after.kt @@ -0,0 +1,4 @@ +fun some() { + if + +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition2.kt b/idea/testData/indentationOnNewline/IfBeforeCondition2.kt new file mode 100644 index 00000000000..1e841eb4745 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition2.kt @@ -0,0 +1,3 @@ +fun some() { + if +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition3.after.kt b/idea/testData/indentationOnNewline/IfBeforeCondition3.after.kt new file mode 100644 index 00000000000..f6c265f5f74 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition3.after.kt @@ -0,0 +1,4 @@ +fun some() { + if + +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition3.kt b/idea/testData/indentationOnNewline/IfBeforeCondition3.kt new file mode 100644 index 00000000000..835479b58d5 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition3.kt @@ -0,0 +1,3 @@ +fun some() { + if +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition4.after.kt b/idea/testData/indentationOnNewline/IfBeforeCondition4.after.kt new file mode 100644 index 00000000000..53db5398089 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition4.after.kt @@ -0,0 +1,7 @@ +fun some() { + if + + (3 > 5) { + + } +} diff --git a/idea/testData/indentationOnNewline/IfBeforeCondition4.kt b/idea/testData/indentationOnNewline/IfBeforeCondition4.kt new file mode 100644 index 00000000000..ae34ff321b6 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfBeforeCondition4.kt @@ -0,0 +1,6 @@ +fun some() { + if + (3 > 5) { + + } +} diff --git a/idea/testData/indentationOnNewline/IfWithBraces.after.kt b/idea/testData/indentationOnNewline/IfWithBraces.after.kt new file mode 100644 index 00000000000..db37d8cad02 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfWithBraces.after.kt @@ -0,0 +1,5 @@ +fun some() { + if (3 > 5) { + + } +} diff --git a/idea/testData/indentationOnNewline/IfWithBraces.kt b/idea/testData/indentationOnNewline/IfWithBraces.kt new file mode 100644 index 00000000000..28d792bc894 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfWithBraces.kt @@ -0,0 +1,3 @@ +fun some() { + if (3 > 5) { +} diff --git a/idea/testData/indentationOnNewline/IfWithBraces2.after.kt b/idea/testData/indentationOnNewline/IfWithBraces2.after.kt new file mode 100644 index 00000000000..2542f3f2bfe --- /dev/null +++ b/idea/testData/indentationOnNewline/IfWithBraces2.after.kt @@ -0,0 +1,6 @@ +fun some() { + if (3 > 5) + { + + } +} diff --git a/idea/testData/indentationOnNewline/IfWithBraces2.kt b/idea/testData/indentationOnNewline/IfWithBraces2.kt new file mode 100644 index 00000000000..e53e30259c3 --- /dev/null +++ b/idea/testData/indentationOnNewline/IfWithBraces2.kt @@ -0,0 +1,5 @@ +fun some() { + if (3 > 5) { + + } +} diff --git a/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.after.kt b/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.after.kt index 0e1d4dcc3da..2f0cf2d3618 100644 --- a/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.after.kt +++ b/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.after.kt @@ -7,5 +7,3 @@ fun a() { a }" } - -// IGNORE_FORMATTER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.kt b/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.kt index cac08b0de8e..3e412d3baf1 100644 --- a/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.kt +++ b/idea/testData/indentationOnNewline/TemplateEntryOpenWithComment2.kt @@ -6,5 +6,3 @@ fun a() { a }" } - -// IGNORE_FORMATTER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Try.after.kt b/idea/testData/indentationOnNewline/Try.after.kt new file mode 100644 index 00000000000..03a4a924a30 --- /dev/null +++ b/idea/testData/indentationOnNewline/Try.after.kt @@ -0,0 +1,2 @@ +fun a() = try + \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Try.kt b/idea/testData/indentationOnNewline/Try.kt new file mode 100644 index 00000000000..8c2b6b3c615 --- /dev/null +++ b/idea/testData/indentationOnNewline/Try.kt @@ -0,0 +1 @@ +fun a() = try \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Try2.after.kt b/idea/testData/indentationOnNewline/Try2.after.kt new file mode 100644 index 00000000000..02951900e5a --- /dev/null +++ b/idea/testData/indentationOnNewline/Try2.after.kt @@ -0,0 +1,4 @@ +fun a() = try +/* smth */ { + +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/Try2.kt b/idea/testData/indentationOnNewline/Try2.kt new file mode 100644 index 00000000000..1745040d674 --- /dev/null +++ b/idea/testData/indentationOnNewline/Try2.kt @@ -0,0 +1,3 @@ +fun a() = try /* smth */ { + +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/WhenWithCondition.after.kt b/idea/testData/indentationOnNewline/WhenWithCondition.after.kt new file mode 100644 index 00000000000..1b86138e2ea --- /dev/null +++ b/idea/testData/indentationOnNewline/WhenWithCondition.after.kt @@ -0,0 +1,6 @@ +fun a() { + when (true) + { + + } +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/WhenWithCondition.kt b/idea/testData/indentationOnNewline/WhenWithCondition.kt new file mode 100644 index 00000000000..a6ff8fcd9af --- /dev/null +++ b/idea/testData/indentationOnNewline/WhenWithCondition.kt @@ -0,0 +1,5 @@ +fun a() { + when (true) { + + } +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/WhenWithCondition2.after.kt b/idea/testData/indentationOnNewline/WhenWithCondition2.after.kt new file mode 100644 index 00000000000..418ce316be6 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhenWithCondition2.after.kt @@ -0,0 +1,6 @@ +fun a() { + when + (true) { + + } +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/WhenWithCondition2.kt b/idea/testData/indentationOnNewline/WhenWithCondition2.kt new file mode 100644 index 00000000000..3fb7e31bd79 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhenWithCondition2.kt @@ -0,0 +1,5 @@ +fun a() { + when (true) { + + } +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/WhenWithoutCondition.after.kt b/idea/testData/indentationOnNewline/WhenWithoutCondition.after.kt new file mode 100644 index 00000000000..0a57f027077 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhenWithoutCondition.after.kt @@ -0,0 +1,6 @@ +fun a() { + when + { + + } +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/WhenWithoutCondition.kt b/idea/testData/indentationOnNewline/WhenWithoutCondition.kt new file mode 100644 index 00000000000..351e76eec7f --- /dev/null +++ b/idea/testData/indentationOnNewline/WhenWithoutCondition.kt @@ -0,0 +1,5 @@ +fun a() { + when { + + } +} \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/While.after.kt b/idea/testData/indentationOnNewline/While.after.kt index c025c774430..4095b484fe0 100644 --- a/idea/testData/indentationOnNewline/While.after.kt +++ b/idea/testData/indentationOnNewline/While.after.kt @@ -2,5 +2,3 @@ fun some() { var t = 12 while (t > 0) - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/While.kt b/idea/testData/indentationOnNewline/While.kt index fe722c59d79..aac34cc9331 100644 --- a/idea/testData/indentationOnNewline/While.kt +++ b/idea/testData/indentationOnNewline/While.kt @@ -1,5 +1,3 @@ fun some() { var t = 12 while (t > 0) - -// WITHOUT_CUSTOM_LINE_INDENT_PROVIDER \ No newline at end of file diff --git a/idea/testData/indentationOnNewline/While2.after.kt b/idea/testData/indentationOnNewline/While2.after.kt new file mode 100644 index 00000000000..75290fce952 --- /dev/null +++ b/idea/testData/indentationOnNewline/While2.after.kt @@ -0,0 +1,4 @@ +fun some() { + var t = 12 + while (t > 0) + println(true) diff --git a/idea/testData/indentationOnNewline/While2.kt b/idea/testData/indentationOnNewline/While2.kt new file mode 100644 index 00000000000..0800259e547 --- /dev/null +++ b/idea/testData/indentationOnNewline/While2.kt @@ -0,0 +1,3 @@ +fun some() { + var t = 12 + while (t > 0) println(true) diff --git a/idea/testData/indentationOnNewline/While3.after.kt b/idea/testData/indentationOnNewline/While3.after.kt new file mode 100644 index 00000000000..94b7443a20e --- /dev/null +++ b/idea/testData/indentationOnNewline/While3.after.kt @@ -0,0 +1,5 @@ +fun some() { + var t = 12 + while (t > 0) { + + } diff --git a/idea/testData/indentationOnNewline/While3.kt b/idea/testData/indentationOnNewline/While3.kt new file mode 100644 index 00000000000..4dba1dcf422 --- /dev/null +++ b/idea/testData/indentationOnNewline/While3.kt @@ -0,0 +1,3 @@ +fun some() { + var t = 12 + while (t > 0) { diff --git a/idea/testData/indentationOnNewline/WhileWithBlock.after.kt b/idea/testData/indentationOnNewline/WhileWithBlock.after.kt new file mode 100644 index 00000000000..dde7b9ed51f --- /dev/null +++ b/idea/testData/indentationOnNewline/WhileWithBlock.after.kt @@ -0,0 +1,6 @@ +fun some() { + var t = 12 + while (t > 0) + { + } +} diff --git a/idea/testData/indentationOnNewline/WhileWithBlock.kt b/idea/testData/indentationOnNewline/WhileWithBlock.kt new file mode 100644 index 00000000000..83d6f254fdc --- /dev/null +++ b/idea/testData/indentationOnNewline/WhileWithBlock.kt @@ -0,0 +1,5 @@ +fun some() { + var t = 12 + while (t > 0) { + } +} diff --git a/idea/testData/indentationOnNewline/WhileWithCondition.after.kt b/idea/testData/indentationOnNewline/WhileWithCondition.after.kt new file mode 100644 index 00000000000..6af6d5eb3c0 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhileWithCondition.after.kt @@ -0,0 +1,7 @@ +fun some() { + var t = 12 + while + (true) { + + } +} diff --git a/idea/testData/indentationOnNewline/WhileWithCondition.kt b/idea/testData/indentationOnNewline/WhileWithCondition.kt new file mode 100644 index 00000000000..5430e84a113 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhileWithCondition.kt @@ -0,0 +1,6 @@ +fun some() { + var t = 12 + while (true) { + + } +} diff --git a/idea/testData/indentationOnNewline/WhileWithoutCondition.after.kt b/idea/testData/indentationOnNewline/WhileWithoutCondition.after.kt new file mode 100644 index 00000000000..10eebe211c1 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhileWithoutCondition.after.kt @@ -0,0 +1,5 @@ +fun some() { + var t = 12 + while + +} diff --git a/idea/testData/indentationOnNewline/WhileWithoutCondition.kt b/idea/testData/indentationOnNewline/WhileWithoutCondition.kt new file mode 100644 index 00000000000..a65fe9201a8 --- /dev/null +++ b/idea/testData/indentationOnNewline/WhileWithoutCondition.kt @@ -0,0 +1,4 @@ +fun some() { + var t = 12 + while +} diff --git a/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.kt b/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.kt index 24e92f07820..9322f6e0fb0 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.kt +++ b/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.actionSystem.IdeActions import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.codeStyle.lineIndent.LineIndentProvider import com.intellij.testFramework.EditorTestUtil +import com.intellij.util.ThrowableRunnable import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.formatter.KotlinLineIndentProvider import org.jetbrains.kotlin.idea.test.KotlinLightPlatformCodeInsightTestCase @@ -70,11 +71,9 @@ abstract class AbstractTypingIndentationTestBase : KotlinLightPlatformCodeInsigh withoutCustomLineIndentProvider: Boolean, ignoreFormatter: Boolean ) { - if (!ignoreFormatter) { - KotlinLineIndentProvider.useFormatter = true - typeAndCheck(beforeFilePath, afterFilePath, "with FormatterBasedLineIndentProvider") - KotlinLineIndentProvider.useFormatter = false - } + KotlinLineIndentProvider.useFormatter = true + typeAndCheck(beforeFilePath, afterFilePath, "with FormatterBasedLineIndentProvider", ignoreFormatter) + KotlinLineIndentProvider.useFormatter = false if (!withoutCustomLineIndentProvider) { typeAndCheck(beforeFilePath, afterFilePath, "with ${customLineIndentProvider.javaClass.simpleName}") @@ -98,7 +97,7 @@ abstract class AbstractTypingIndentationTestBase : KotlinLightPlatformCodeInsigh ) } - private fun typeAndCheck(beforeFilePath: String, afterFilePath: String, errorMessage: String) { + private fun typeAndCheck(beforeFilePath: String, afterFilePath: String, errorMessage: String, invertResult: Boolean = false) { configureByFile(beforeFilePath) executeAction(IdeActions.ACTION_EDITOR_ENTER) val actualTextWithCaret = StringBuilder(editor.document.text).insert( @@ -106,7 +105,14 @@ abstract class AbstractTypingIndentationTestBase : KotlinLightPlatformCodeInsigh EditorTestUtil.CARET_TAG ).toString() - KotlinTestUtils.assertEqualsToFile(errorMessage, File(afterFilePath), actualTextWithCaret) + val result = kotlin.runCatching { + KotlinTestUtils.assertEqualsToFile(errorMessage, File(afterFilePath), actualTextWithCaret) + } + + if (invertResult) + Assert.assertTrue("Remove // IGNORE_FORMATTER", result.isFailure) + else + result.getOrThrow() } override fun getTestDataPath(): String = "" diff --git a/idea/tests/org/jetbrains/kotlin/formatter/TypingIndentationTestBaseGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/TypingIndentationTestBaseGenerated.java index e8ef3c7b189..36ac0d8f26a 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/TypingIndentationTestBaseGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/TypingIndentationTestBaseGenerated.java @@ -80,6 +80,21 @@ public class TypingIndentationTestBaseGenerated extends AbstractTypingIndentatio runTest("idea/testData/indentationOnNewline/BinaryWithTypeExpressions.after.kt"); } + @TestMetadata("Catch.after.kt") + public void testCatch() throws Exception { + runTest("idea/testData/indentationOnNewline/Catch.after.kt"); + } + + @TestMetadata("Catch2.after.kt") + public void testCatch2() throws Exception { + runTest("idea/testData/indentationOnNewline/Catch2.after.kt"); + } + + @TestMetadata("Catch3.after.kt") + public void testCatch3() throws Exception { + runTest("idea/testData/indentationOnNewline/Catch3.after.kt"); + } + @TestMetadata("ConsecutiveCallsAfterDot.after.kt") public void testConsecutiveCallsAfterDot() throws Exception { runTest("idea/testData/indentationOnNewline/ConsecutiveCallsAfterDot.after.kt"); @@ -95,21 +110,106 @@ public class TypingIndentationTestBaseGenerated extends AbstractTypingIndentatio runTest("idea/testData/indentationOnNewline/ConsecutiveCallsInSafeCallsEnd.after.kt"); } + @TestMetadata("Do2.after.kt") + public void testDo2() throws Exception { + runTest("idea/testData/indentationOnNewline/Do2.after.kt"); + } + @TestMetadata("DoInFun.after.kt") public void testDoInFun() throws Exception { runTest("idea/testData/indentationOnNewline/DoInFun.after.kt"); } + @TestMetadata("DoWithBraces.after.kt") + public void testDoWithBraces() throws Exception { + runTest("idea/testData/indentationOnNewline/DoWithBraces.after.kt"); + } + + @TestMetadata("DoWithBraces2.after.kt") + public void testDoWithBraces2() throws Exception { + runTest("idea/testData/indentationOnNewline/DoWithBraces2.after.kt"); + } + + @TestMetadata("ElseIf.after.kt") + public void testElseIf() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseIf.after.kt"); + } + + @TestMetadata("ElseInWhenWithOption.after.kt") + public void testElseInWhenWithOption() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseInWhenWithOption.after.kt"); + } + + @TestMetadata("ElseInWhenWithoutOption.after.kt") + public void testElseInWhenWithoutOption() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseInWhenWithoutOption.after.kt"); + } + + @TestMetadata("ElseWithBrace.after.kt") + public void testElseWithBrace() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithBrace.after.kt"); + } + + @TestMetadata("ElseWithBraceAndComment.after.kt") + public void testElseWithBraceAndComment() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithBraceAndComment.after.kt"); + } + + @TestMetadata("ElseWithBraceAndComment2.after.kt") + public void testElseWithBraceAndComment2() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithBraceAndComment2.after.kt"); + } + + @TestMetadata("ElseWithoutBrace.after.kt") + public void testElseWithoutBrace() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithoutBrace.after.kt"); + } + + @TestMetadata("ElseWithoutBrace2.after.kt") + public void testElseWithoutBrace2() throws Exception { + runTest("idea/testData/indentationOnNewline/ElseWithoutBrace2.after.kt"); + } + @TestMetadata("EmptyParameters.after.kt") public void testEmptyParameters() throws Exception { runTest("idea/testData/indentationOnNewline/EmptyParameters.after.kt"); } + @TestMetadata("Finally.after.kt") + public void testFinally() throws Exception { + runTest("idea/testData/indentationOnNewline/Finally.after.kt"); + } + + @TestMetadata("Finally2.after.kt") + public void testFinally2() throws Exception { + runTest("idea/testData/indentationOnNewline/Finally2.after.kt"); + } + + @TestMetadata("Finally3.after.kt") + public void testFinally3() throws Exception { + runTest("idea/testData/indentationOnNewline/Finally3.after.kt"); + } + @TestMetadata("For.after.kt") public void testFor() throws Exception { runTest("idea/testData/indentationOnNewline/For.after.kt"); } + @TestMetadata("ForWithBlock.after.kt") + public void testForWithBlock() throws Exception { + runTest("idea/testData/indentationOnNewline/ForWithBlock.after.kt"); + } + + @TestMetadata("ForWithCondition.after.kt") + public void testForWithCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/ForWithCondition.after.kt"); + } + + @TestMetadata("ForWithoutCondition.after.kt") + public void testForWithoutCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/ForWithoutCondition.after.kt"); + } + @TestMetadata("FunctionBlock.after.kt") public void testFunctionBlock() throws Exception { runTest("idea/testData/indentationOnNewline/FunctionBlock.after.kt"); @@ -125,6 +225,36 @@ public class TypingIndentationTestBaseGenerated extends AbstractTypingIndentatio runTest("idea/testData/indentationOnNewline/If.after.kt"); } + @TestMetadata("IfBeforeCondition.after.kt") + public void testIfBeforeCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition.after.kt"); + } + + @TestMetadata("IfBeforeCondition2.after.kt") + public void testIfBeforeCondition2() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition2.after.kt"); + } + + @TestMetadata("IfBeforeCondition3.after.kt") + public void testIfBeforeCondition3() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition3.after.kt"); + } + + @TestMetadata("IfBeforeCondition4.after.kt") + public void testIfBeforeCondition4() throws Exception { + runTest("idea/testData/indentationOnNewline/IfBeforeCondition4.after.kt"); + } + + @TestMetadata("IfWithBraces.after.kt") + public void testIfWithBraces() throws Exception { + runTest("idea/testData/indentationOnNewline/IfWithBraces.after.kt"); + } + + @TestMetadata("IfWithBraces2.after.kt") + public void testIfWithBraces2() throws Exception { + runTest("idea/testData/indentationOnNewline/IfWithBraces2.after.kt"); + } + @TestMetadata("InBinaryExpressionInMiddle.after.kt") public void testInBinaryExpressionInMiddle() throws Exception { runTest("idea/testData/indentationOnNewline/InBinaryExpressionInMiddle.after.kt"); @@ -400,11 +530,61 @@ public class TypingIndentationTestBaseGenerated extends AbstractTypingIndentatio runTest("idea/testData/indentationOnNewline/TemplateEntryOpenWithoutContent5.after.kt"); } + @TestMetadata("Try.after.kt") + public void testTry() throws Exception { + runTest("idea/testData/indentationOnNewline/Try.after.kt"); + } + + @TestMetadata("Try2.after.kt") + public void testTry2() throws Exception { + runTest("idea/testData/indentationOnNewline/Try2.after.kt"); + } + + @TestMetadata("WhenWithCondition.after.kt") + public void testWhenWithCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhenWithCondition.after.kt"); + } + + @TestMetadata("WhenWithCondition2.after.kt") + public void testWhenWithCondition2() throws Exception { + runTest("idea/testData/indentationOnNewline/WhenWithCondition2.after.kt"); + } + + @TestMetadata("WhenWithoutCondition.after.kt") + public void testWhenWithoutCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhenWithoutCondition.after.kt"); + } + @TestMetadata("While.after.kt") public void testWhile() throws Exception { runTest("idea/testData/indentationOnNewline/While.after.kt"); } + @TestMetadata("While2.after.kt") + public void testWhile2() throws Exception { + runTest("idea/testData/indentationOnNewline/While2.after.kt"); + } + + @TestMetadata("While3.after.kt") + public void testWhile3() throws Exception { + runTest("idea/testData/indentationOnNewline/While3.after.kt"); + } + + @TestMetadata("WhileWithBlock.after.kt") + public void testWhileWithBlock() throws Exception { + runTest("idea/testData/indentationOnNewline/WhileWithBlock.after.kt"); + } + + @TestMetadata("WhileWithCondition.after.kt") + public void testWhileWithCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhileWithCondition.after.kt"); + } + + @TestMetadata("WhileWithoutCondition.after.kt") + public void testWhileWithoutCondition() throws Exception { + runTest("idea/testData/indentationOnNewline/WhileWithoutCondition.after.kt"); + } + @TestMetadata("idea/testData/indentationOnNewline/script") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)