From a1949e1d53621d4293a8d9ab56b84958e0a0ca77 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 25 Oct 2017 14:17:47 +0200 Subject: [PATCH] Add formatting rule for array literals #KT-19599 Fixed --- .../jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt | 8 +++++++- idea/testData/formatter/ArrayLiteral.after.kt | 7 +++++++ idea/testData/formatter/ArrayLiteral.kt | 7 +++++++ .../kotlin/formatter/FormatterTestGenerated.java | 6 ++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 idea/testData/formatter/ArrayLiteral.after.kt create mode 100644 idea/testData/formatter/ArrayLiteral.kt 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 6a88361d320..cb0a4a048ab 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -534,7 +534,13 @@ private val INDENT_RULES = arrayOf( strategy("Where clause") .within(KtNodeTypes.CLASS, KtNodeTypes.FUN, KtNodeTypes.PROPERTY) .forType(KtTokens.WHERE_KEYWORD) - .set(Indent.getContinuationIndent())) + .set(Indent.getContinuationIndent()), + + strategy("Array literals") + .within(KtNodeTypes.COLLECTION_LITERAL_EXPRESSION) + .notForType(LBRACKET, RBRACKET) + .set(Indent.getNormalIndent()) +) private fun getOperationType(node: ASTNode): IElementType? = node.findChildByType(KtNodeTypes.OPERATION_REFERENCE)?.firstChildNode?.elementType diff --git a/idea/testData/formatter/ArrayLiteral.after.kt b/idea/testData/formatter/ArrayLiteral.after.kt new file mode 100644 index 00000000000..c38963642f2 --- /dev/null +++ b/idea/testData/formatter/ArrayLiteral.after.kt @@ -0,0 +1,7 @@ +@Component( + modules = [ + AppModule::class, + DataModule::class, + DomainModule::class + ] +) diff --git a/idea/testData/formatter/ArrayLiteral.kt b/idea/testData/formatter/ArrayLiteral.kt new file mode 100644 index 00000000000..fdb94b4f17c --- /dev/null +++ b/idea/testData/formatter/ArrayLiteral.kt @@ -0,0 +1,7 @@ +@Component( + modules = [ + AppModule::class, + DataModule::class, + DomainModule::class + ] +) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index aa4a7f6f12a..bfaf9cf41f7 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -68,6 +68,12 @@ public class FormatterTestGenerated extends AbstractFormatterTest { doTest(fileName); } + @TestMetadata("ArrayLiteral.after.kt") + public void testArrayLiteral() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/ArrayLiteral.after.kt"); + doTest(fileName); + } + @TestMetadata("BinaryExpressionAlignmentSpread.after.kt") public void testBinaryExpressionAlignmentSpread() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/BinaryExpressionAlignmentSpread.after.kt");