diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java index 9cc38e0133d..abb3814743b 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java @@ -207,7 +207,7 @@ public class JetBlock extends AbstractBlock { return NodeAlignmentStrategy.fromTypes(AlignmentStrategy.wrap( createAlignment(jetCommonSettings.ALIGN_MULTILINE_BINARY_OPERATION, getAlignment()))); } - else if (parentType == DELEGATION_SPECIFIER_LIST) { + else if (parentType == DELEGATION_SPECIFIER_LIST || parentType == INITIALIZER_LIST) { return NodeAlignmentStrategy.fromTypes(AlignmentStrategy.wrap( createAlignment(jetCommonSettings.ALIGN_MULTILINE_EXTENDS_LIST, getAlignment()))); } @@ -318,7 +318,7 @@ public class JetBlock extends AbstractBlock { .set(Indent.getContinuationWithoutFirstIndent(true)), ASTIndentStrategy.forNode("Delegation list") - .in(DELEGATION_SPECIFIER_LIST) + .in(DELEGATION_SPECIFIER_LIST, INITIALIZER_LIST) .set(Indent.getContinuationIndent(false)), ASTIndentStrategy.forNode("Indices") diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt index fe7bedcddb9..f5559539829 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt @@ -111,7 +111,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { beforeInside(COLON, TYPE_COLON_ELEMENTS) { spaceIf(jetSettings.SPACE_BEFORE_TYPE_COLON) } afterInside(COLON, TYPE_COLON_ELEMENTS) { spaceIf(jetSettings.SPACE_AFTER_TYPE_COLON) } - val EXTEND_COLON_ELEMENTS = TokenSet.create(TYPE_CONSTRAINT, CLASS, OBJECT_DECLARATION, TYPE_PARAMETER) + val EXTEND_COLON_ELEMENTS = TokenSet.create(TYPE_CONSTRAINT, CLASS, OBJECT_DECLARATION, TYPE_PARAMETER, ENUM_ENTRY) beforeInside(COLON, EXTEND_COLON_ELEMENTS) { spaceIf(jetSettings.SPACE_BEFORE_EXTEND_COLON) } afterInside(COLON, EXTEND_COLON_ELEMENTS) { spaceIf(jetSettings.SPACE_AFTER_EXTEND_COLON) } diff --git a/idea/testData/formatter/DelegationList.after.inv.kt b/idea/testData/formatter/DelegationList.after.inv.kt index 470995fba5b..d661309ffac 100644 --- a/idea/testData/formatter/DelegationList.after.inv.kt +++ b/idea/testData/formatter/DelegationList.after.inv.kt @@ -23,4 +23,17 @@ object SimpleObject2 : B1(), A1, A2, A3 +open class C1 +open class C2 + +enum class Test : A1 { + FIRST_ITEM : Test(), C1(), + C2() + SECOND_ITEM : + Test() + + THIRD_ITEM : Test(), + C1() FORTH_ITEM : Test() +} + // SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST \ No newline at end of file diff --git a/idea/testData/formatter/DelegationList.after.kt b/idea/testData/formatter/DelegationList.after.kt index c9134466e8f..919487355b8 100644 --- a/idea/testData/formatter/DelegationList.after.kt +++ b/idea/testData/formatter/DelegationList.after.kt @@ -23,4 +23,17 @@ object SimpleObject2 : B1(), A1, A2, A3 +open class C1 +open class C2 + +enum class Test : A1 { + FIRST_ITEM : Test(), C1(), + C2() + SECOND_ITEM : + Test() + + THIRD_ITEM : Test(), + C1() FORTH_ITEM : Test() +} + // SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST \ No newline at end of file diff --git a/idea/testData/formatter/DelegationList.kt b/idea/testData/formatter/DelegationList.kt index 9cf8e98cce6..7bd9fd0d8eb 100644 --- a/idea/testData/formatter/DelegationList.kt +++ b/idea/testData/formatter/DelegationList.kt @@ -23,4 +23,17 @@ object SimpleObject2: B1(), A1, A2, A3 +open class C1 +open class C2 + +enum class Test : A1 { + FIRST_ITEM : Test(), C1(), + C2() + SECOND_ITEM : + Test() + + THIRD_ITEM : Test(), + C1() FORTH_ITEM : Test() +} + // SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST \ No newline at end of file diff --git a/idea/testData/formatter/SpaceAroundExtendColonInEnums.after.inv.kt b/idea/testData/formatter/SpaceAroundExtendColonInEnums.after.inv.kt new file mode 100644 index 00000000000..41ed08133f7 --- /dev/null +++ b/idea/testData/formatter/SpaceAroundExtendColonInEnums.after.inv.kt @@ -0,0 +1,10 @@ +enum class Test: A { + FIRST: Test() + SECOND: + Test() + + THIRD: Test() FORTH: Test() +} + +// SET_TRUE: SPACE_BEFORE_EXTEND_COLON +// SET_FALSE: SPACE_AFTER_EXTEND_COLON diff --git a/idea/testData/formatter/SpaceAroundExtendColonInEnums.after.kt b/idea/testData/formatter/SpaceAroundExtendColonInEnums.after.kt new file mode 100644 index 00000000000..69b6f4a8ede --- /dev/null +++ b/idea/testData/formatter/SpaceAroundExtendColonInEnums.after.kt @@ -0,0 +1,10 @@ +enum class Test :A { + FIRST :Test() + SECOND : + Test() + + THIRD :Test() FORTH :Test() +} + +// SET_TRUE: SPACE_BEFORE_EXTEND_COLON +// SET_FALSE: SPACE_AFTER_EXTEND_COLON diff --git a/idea/testData/formatter/SpaceAroundExtendColonInEnums.kt b/idea/testData/formatter/SpaceAroundExtendColonInEnums.kt new file mode 100644 index 00000000000..2c09f554541 --- /dev/null +++ b/idea/testData/formatter/SpaceAroundExtendColonInEnums.kt @@ -0,0 +1,10 @@ +enum class Test : A { + FIRST : Test() + SECOND: + Test() + + THIRD: Test() FORTH: Test() +} + +// SET_TRUE: SPACE_BEFORE_EXTEND_COLON +// SET_FALSE: SPACE_AFTER_EXTEND_COLON diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.inv.kt b/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.inv.kt new file mode 100644 index 00000000000..8e1dacb1353 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.inv.kt @@ -0,0 +1,8 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: + +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.kt b/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.kt new file mode 100644 index 00000000000..8e1dacb1353 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.kt @@ -0,0 +1,8 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: + +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.kt b/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.kt new file mode 100644 index 00000000000..c29d21d6335 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.kt @@ -0,0 +1,7 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.inv.kt b/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.inv.kt new file mode 100644 index 00000000000..eb53831c90f --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.inv.kt @@ -0,0 +1,8 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: EnumTest(), + +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.kt b/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.kt new file mode 100644 index 00000000000..905d8e3f133 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.kt @@ -0,0 +1,8 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: EnumTest(), + +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.kt b/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.kt new file mode 100644 index 00000000000..657f7f824d0 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.kt @@ -0,0 +1,7 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: EnumTest(), +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.inv.kt b/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.inv.kt new file mode 100644 index 00000000000..cf5efcefb45 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.inv.kt @@ -0,0 +1,8 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: EnumTest(), + A1 +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.kt b/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.kt new file mode 100644 index 00000000000..8cffbdb9df6 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.kt @@ -0,0 +1,8 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: EnumTest(), + A1 +} diff --git a/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.kt b/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.kt new file mode 100644 index 00000000000..d20fc3a8d04 --- /dev/null +++ b/idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.kt @@ -0,0 +1,7 @@ +// SET_TRUE: ALIGN_MULTILINE_EXTENDS_LIST + +trait A1 + +enum class EnumTest { + ENTRY: EnumTest(), A1 +} diff --git a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java index e2644f7c64b..59076345e98 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java @@ -264,6 +264,11 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTest("idea/testData/formatter/SpaceAroundExtendColon.after.kt"); } + @TestMetadata("SpaceAroundExtendColonInEnums.after.kt") + public void testSpaceAroundExtendColonInEnums() throws Exception { + doTest("idea/testData/formatter/SpaceAroundExtendColonInEnums.after.kt"); + } + @TestMetadata("SpaceAroundExtendColonInObjects.after.kt") public void testSpaceAroundExtendColonInObjects() throws Exception { doTest("idea/testData/formatter/SpaceAroundExtendColonInObjects.after.kt"); @@ -532,6 +537,11 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTestInverted("idea/testData/formatter/SpaceAroundExtendColon.after.inv.kt"); } + @TestMetadata("SpaceAroundExtendColonInEnums.after.inv.kt") + public void testSpaceAroundExtendColonInEnums() throws Exception { + doTestInverted("idea/testData/formatter/SpaceAroundExtendColonInEnums.after.inv.kt"); + } + @TestMetadata("SpaceAroundExtendColonInObjects.after.inv.kt") public void testSpaceAroundExtendColonInObjects() throws Exception { doTestInverted("idea/testData/formatter/SpaceAroundExtendColonInObjects.after.inv.kt"); diff --git a/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java b/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java index c7d05f6ec46..acf6999031e 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java @@ -139,6 +139,21 @@ public class JetTypingIndentationTestBaseGenerated extends AbstractJetTypingInde doNewlineTest("idea/testData/indentationOnNewline/InDelegationListNotEmpty.after.kt"); } + @TestMetadata("InEnumInitializerListAfterColon.after.kt") + public void testInEnumInitializerListAfterColon() throws Exception { + doNewlineTest("idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.kt"); + } + + @TestMetadata("InEnumInitializerListAfterComma.after.kt") + public void testInEnumInitializerListAfterComma() throws Exception { + doNewlineTest("idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.kt"); + } + + @TestMetadata("InEnumInitializerListNotEmpty.after.kt") + public void testInEnumInitializerListNotEmpty() throws Exception { + doNewlineTest("idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.kt"); + } + @TestMetadata("InExpressionsParentheses.after.kt") public void testInExpressionsParentheses() throws Exception { doNewlineTest("idea/testData/indentationOnNewline/InExpressionsParentheses.after.kt"); @@ -242,6 +257,21 @@ public class JetTypingIndentationTestBaseGenerated extends AbstractJetTypingInde doNewlineTestWithInvert("idea/testData/indentationOnNewline/InDelegationListNotEmpty.after.inv.kt"); } + @TestMetadata("InEnumInitializerListAfterColon.after.inv.kt") + public void testInEnumInitializerListAfterColon() throws Exception { + doNewlineTestWithInvert("idea/testData/indentationOnNewline/InEnumInitializerListAfterColon.after.inv.kt"); + } + + @TestMetadata("InEnumInitializerListAfterComma.after.inv.kt") + public void testInEnumInitializerListAfterComma() throws Exception { + doNewlineTestWithInvert("idea/testData/indentationOnNewline/InEnumInitializerListAfterComma.after.inv.kt"); + } + + @TestMetadata("InEnumInitializerListNotEmpty.after.inv.kt") + public void testInEnumInitializerListNotEmpty() throws Exception { + doNewlineTestWithInvert("idea/testData/indentationOnNewline/InEnumInitializerListNotEmpty.after.inv.kt"); + } + @TestMetadata("InExpressionsParentheses.after.inv.kt") public void testInExpressionsParentheses() throws Exception { doNewlineTestWithInvert("idea/testData/indentationOnNewline/InExpressionsParentheses.after.inv.kt");