diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java index 0dcfca95f28..a24cef48284 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java @@ -37,8 +37,8 @@ import java.util.*; * @see Block for good JavaDoc documentation */ public class JetBlock extends AbstractBlock { - private Indent myIndent; - private CodeStyleSettings mySettings; + private final Indent myIndent; + private final CodeStyleSettings mySettings; private final SpacingBuilder mySpacingBuilder; private List mySubBlocks; @@ -158,6 +158,10 @@ public class JetBlock extends AbstractBlock { return new ChildAttributes(Indent.getContinuationIndent(), null); } + if (isIncomplete()) { + return super.getChildAttributes(newChildIndex); + } + return new ChildAttributes(Indent.getNoneIndent(), null); } @@ -266,7 +270,11 @@ public class JetBlock extends AbstractBlock { ASTIndentStrategy.forNode("For single statement in THEN and ELSE") .in(JetNodeTypes.THEN, JetNodeTypes.ELSE) .notForType(JetNodeTypes.BLOCK) - .set(Indent.getNormalIndent()) + .set(Indent.getNormalIndent()), + + ASTIndentStrategy.forNode("Indent for parts") + .in(JetNodeTypes.PROPERTY, JetNodeTypes.FUN) + .set(Indent.getContinuationWithoutFirstIndent()), }; @Nullable diff --git a/idea/testData/codeInsight/overrideImplement/functionWithTypeParameters.kt.after b/idea/testData/codeInsight/overrideImplement/functionWithTypeParameters.kt.after index b3056ffb517..3a0b2bdb45e 100644 --- a/idea/testData/codeInsight/overrideImplement/functionWithTypeParameters.kt.after +++ b/idea/testData/codeInsight/overrideImplement/functionWithTypeParameters.kt.after @@ -7,7 +7,7 @@ trait Trait { class TraitImpl : Trait { override fun > foo() - where B: Cloneable, B: Comparable { + where B: Cloneable, B: Comparable { throw UnsupportedOperationException() } } \ No newline at end of file diff --git a/idea/testData/formatter/FunctionWithInference.kt b/idea/testData/formatter/FunctionWithInference.kt new file mode 100644 index 00000000000..3de1c11594a --- /dev/null +++ b/idea/testData/formatter/FunctionWithInference.kt @@ -0,0 +1,3 @@ +fun +test() = +12 diff --git a/idea/testData/formatter/FunctionWithInference_after.kt b/idea/testData/formatter/FunctionWithInference_after.kt new file mode 100644 index 00000000000..bcd8f70bd01 --- /dev/null +++ b/idea/testData/formatter/FunctionWithInference_after.kt @@ -0,0 +1,3 @@ +fun + test() = + 12 diff --git a/idea/testData/formatter/IndentationOnNewline/FunctionWithInference.kt b/idea/testData/formatter/IndentationOnNewline/FunctionWithInference.kt new file mode 100644 index 00000000000..14b2fe431e4 --- /dev/null +++ b/idea/testData/formatter/IndentationOnNewline/FunctionWithInference.kt @@ -0,0 +1 @@ +fun test() = \ No newline at end of file diff --git a/idea/testData/formatter/IndentationOnNewline/FunctionWithInference_after.kt b/idea/testData/formatter/IndentationOnNewline/FunctionWithInference_after.kt new file mode 100644 index 00000000000..cdd35d0107e --- /dev/null +++ b/idea/testData/formatter/IndentationOnNewline/FunctionWithInference_after.kt @@ -0,0 +1,2 @@ +fun test() = + \ No newline at end of file diff --git a/idea/testData/formatter/IndentationOnNewline/PropertyWithInference.kt b/idea/testData/formatter/IndentationOnNewline/PropertyWithInference.kt new file mode 100644 index 00000000000..771f562e866 --- /dev/null +++ b/idea/testData/formatter/IndentationOnNewline/PropertyWithInference.kt @@ -0,0 +1 @@ +val a = \ No newline at end of file diff --git a/idea/testData/formatter/IndentationOnNewline/PropertyWithInference_after.kt b/idea/testData/formatter/IndentationOnNewline/PropertyWithInference_after.kt new file mode 100644 index 00000000000..c5d2284b0f1 --- /dev/null +++ b/idea/testData/formatter/IndentationOnNewline/PropertyWithInference_after.kt @@ -0,0 +1,2 @@ +val a = + \ No newline at end of file diff --git a/idea/testData/formatter/PropertyWIthInference_after.kt b/idea/testData/formatter/PropertyWIthInference_after.kt new file mode 100644 index 00000000000..9fcbe03018f --- /dev/null +++ b/idea/testData/formatter/PropertyWIthInference_after.kt @@ -0,0 +1,3 @@ +val + a = + 12 diff --git a/idea/testData/formatter/PropertyWithInference.kt b/idea/testData/formatter/PropertyWithInference.kt new file mode 100644 index 00000000000..eb877ed15c2 --- /dev/null +++ b/idea/testData/formatter/PropertyWithInference.kt @@ -0,0 +1,3 @@ +val +a = +12 diff --git a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java index 5674b8d1337..10874a50d1d 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java @@ -53,6 +53,10 @@ public class JetFormatterTest extends AbstractJetFormatterTest { doTest(); } + public void testFunctionWithInference() throws Exception { + doTest(); + } + public void testGetterAndSetter() throws Exception { doTest(); } @@ -65,6 +69,10 @@ public class JetFormatterTest extends AbstractJetFormatterTest { doTestWithInvert(); } + public void testPropertyWithInference() throws Exception { + doTest(); + } + public void testRightBracketOnNewLine() throws Exception { doTestWithInvert(); } diff --git a/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTest.java b/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTest.java index 5aec6c4bdf6..77e785dfce3 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTest.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTest.java @@ -53,6 +53,10 @@ public class JetTypingIndentationTest extends LightCodeInsightTestCase { doFileNewlineTest(); } + public void testFunctionWithInference() { + doFileNewlineTest(); + } + public void testIf() { doFileNewlineTest(); } @@ -61,6 +65,10 @@ public class JetTypingIndentationTest extends LightCodeInsightTestCase { doFileNewlineTest(); } + public void testPropertyWithInference() { + doFileNewlineTest(); + } + public void testSettingAlignMultilineParametersInCalls() throws Exception { doFileSettingNewLineTest(); }