From bfdb756e2276be1a3c2d8b8b0739a4c36b1bc7ec Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 31 Oct 2014 18:56:28 +0300 Subject: [PATCH] Fixed formatting of doc-comments for parameters --- .../plugin/formatter/kotlinSpacingRules.kt | 17 ++++++++++----- .../formatter/ParameterDocComments.after.kt | 21 +++++++++++++++++++ .../formatter/ParameterDocComments.kt | 14 +++++++++++++ .../formatter/JetFormatterTestGenerated.java | 6 ++++++ 4 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 idea/testData/formatter/ParameterDocComments.after.kt create mode 100644 idea/testData/formatter/ParameterDocComments.kt diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt index 6fbf965bff7..14218613092 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt @@ -29,11 +29,7 @@ import com.intellij.formatting.ASTBlock import org.jetbrains.jet.plugin.formatter.KotlinSpacingBuilder.CustomSpacingBuilder import com.intellij.formatting.SpacingBuilder import com.intellij.formatting.SpacingBuilder.RuleBuilder -import com.intellij.formatting.DependentSpacingRule -import com.intellij.formatting.DependentSpacingRule.Trigger -import com.intellij.formatting.DependentSpacingRule.Anchor -import com.intellij.openapi.util.TextRange -import com.intellij.formatting.DependantSpacingImpl +import org.jetbrains.jet.lexer.JetTokens val MODIFIERS_LIST_ENTRIES = TokenSet.orSet(TokenSet.create(ANNOTATION_ENTRY, ANNOTATION), MODIFIER_KEYWORDS) @@ -63,6 +59,17 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { inPosition(left = ENUM_ENTRY, right = ENUM_ENTRY).emptyLinesIfLineBreakInLeft( emptyLines = 0, numSpacesOtherwise = 1, numberOfLineFeedsOtherwise = 0) + + val parameterWithDocCommentRule = { + (parent: ASTBlock, left: ASTBlock, right: ASTBlock) -> + if (right.getNode().getFirstChildNode().getElementType() == JetTokens.DOC_COMMENT) { + Spacing.createSpacing(0, 0, 1, true, settings.KEEP_BLANK_LINES_IN_DECLARATIONS) + } + else { + null + } + } + inPosition(parent = VALUE_PARAMETER_LIST, right = VALUE_PARAMETER).customRule(parameterWithDocCommentRule) } simple { diff --git a/idea/testData/formatter/ParameterDocComments.after.kt b/idea/testData/formatter/ParameterDocComments.after.kt new file mode 100644 index 00000000000..05b7fce125f --- /dev/null +++ b/idea/testData/formatter/ParameterDocComments.after.kt @@ -0,0 +1,21 @@ +class A( + /** + * Doc comment + */ + public val p1: Int, + /** Doc comment */ + public val p2: Int, + /** + * Doc + */ + val p2: String) + +class B( + /** Doc1 */ + val v: Int, + + /** + * Doc2 + */ + val v2: Int +) \ No newline at end of file diff --git a/idea/testData/formatter/ParameterDocComments.kt b/idea/testData/formatter/ParameterDocComments.kt new file mode 100644 index 00000000000..c76f0bf3ba4 --- /dev/null +++ b/idea/testData/formatter/ParameterDocComments.kt @@ -0,0 +1,14 @@ +class A(/** + * Doc comment + */ public val p1: Int, /** Doc comment */ public val p2: Int, /** + * Doc + */ val p2: String) + +class B( + /** Doc1 */ + val v: Int, + + /** + * Doc2 + */ val v2: Int +) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java index 2c50cdaeff6..fcfe01255cf 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java @@ -340,6 +340,12 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTest(fileName); } + @TestMetadata("ParameterDocComments.after.kt") + public void testParameterDocComments() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/ParameterDocComments.after.kt"); + doTest(fileName); + } + @TestMetadata("Parameters.after.kt") public void testParameters() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/Parameters.after.kt");