From 3aaad0c21da99c5a92c3bbd661146576e1960d6c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Sun, 4 Feb 2018 22:17:20 +0100 Subject: [PATCH] Indent default parameter values #KT-22508 Fixed --- .../idea/formatter/KotlinCommonBlock.kt | 7 ++++++- .../DefaultParameterValues.after.inv.kt | 12 +++++++++++ .../DefaultParameterValues.after.kt | 12 +++++++++++ .../parameterList/DefaultParameterValues.kt | 12 +++++++++++ .../formatter/FormatterTestGenerated.java | 21 +++++++++++++++++++ 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 idea/testData/formatter/parameterList/DefaultParameterValues.after.inv.kt create mode 100644 idea/testData/formatter/parameterList/DefaultParameterValues.after.kt create mode 100644 idea/testData/formatter/parameterList/DefaultParameterValues.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 e3c9c08de56..ba37935d702 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -790,7 +790,12 @@ private val INDENT_RULES = arrayOf( KtTokens.TYPE_ALIAS_KEYWORD, KtTokens.EOL_COMMENT, KtNodeTypes.MODIFIER_LIST, KtTokens.BLOCK_COMMENT, KtTokens.DOC_COMMENT ) - .set(Indent.getContinuationIndent()) + .set(Indent.getContinuationIndent()), + + strategy("Default parameter values") + .within(KtNodeTypes.VALUE_PARAMETER) + .forElement { node -> node.psi != null && node.psi == (node.psi.parent as? KtParameter)?.defaultValue } + .continuationIf(KotlinCodeStyleSettings::CONTINUATION_INDENT_FOR_EXPRESSION_BODIES, indentFirst = true) ) diff --git a/idea/testData/formatter/parameterList/DefaultParameterValues.after.inv.kt b/idea/testData/formatter/parameterList/DefaultParameterValues.after.inv.kt new file mode 100644 index 00000000000..f91e65f4fb9 --- /dev/null +++ b/idea/testData/formatter/parameterList/DefaultParameterValues.after.inv.kt @@ -0,0 +1,12 @@ +fun foo( + x: Int = + 42 +) { +} + +class C( + val x: Int = + 42 +) + +// SET_TRUE: CONTINUATION_INDENT_FOR_EXPRESSION_BODIES diff --git a/idea/testData/formatter/parameterList/DefaultParameterValues.after.kt b/idea/testData/formatter/parameterList/DefaultParameterValues.after.kt new file mode 100644 index 00000000000..0c5e97ef42d --- /dev/null +++ b/idea/testData/formatter/parameterList/DefaultParameterValues.after.kt @@ -0,0 +1,12 @@ +fun foo( + x: Int = + 42 +) { +} + +class C( + val x: Int = + 42 +) + +// SET_TRUE: CONTINUATION_INDENT_FOR_EXPRESSION_BODIES diff --git a/idea/testData/formatter/parameterList/DefaultParameterValues.kt b/idea/testData/formatter/parameterList/DefaultParameterValues.kt new file mode 100644 index 00000000000..1d2a60408cb --- /dev/null +++ b/idea/testData/formatter/parameterList/DefaultParameterValues.kt @@ -0,0 +1,12 @@ +fun foo( + x: Int = + 42 +) { +} + +class C( + val x: Int = + 42 +) + +// SET_TRUE: CONTINUATION_INDENT_FOR_EXPRESSION_BODIES diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index 0b6e1cb75f9..b59d8fbd431 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -1184,6 +1184,12 @@ public class FormatterTestGenerated extends AbstractFormatterTest { doTest(fileName); } + @TestMetadata("DefaultParameterValues.after.kt") + public void testDefaultParameterValues() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/parameterList/DefaultParameterValues.after.kt"); + doTest(fileName); + } + @TestMetadata("KT19727.after.kt") public void testKT19727() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/parameterList/KT19727.after.kt"); @@ -1544,5 +1550,20 @@ public class FormatterTestGenerated extends AbstractFormatterTest { doTestInverted(fileName); } } + + @TestMetadata("idea/testData/formatter/parameterList") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class ParameterList extends AbstractFormatterTest { + public void testAllFilesPresentInParameterList() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/formatter/parameterList"), Pattern.compile("^([^\\.]+)\\.after\\.inv\\.kt.*$"), TargetBackend.ANY, true); + } + + @TestMetadata("DefaultParameterValues.after.inv.kt") + public void testDefaultParameterValues() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/parameterList/DefaultParameterValues.after.inv.kt"); + doTestInverted(fileName); + } + } } }