From e8fb02fff024fc385a07531ca3ae97b6b6552705 Mon Sep 17 00:00:00 2001 From: dawe Date: Tue, 19 Dec 2023 22:00:31 +0100 Subject: [PATCH 1/4] add test --- .../PatternMatchingTests.fs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Fantomas.Core.Tests/PatternMatchingTests.fs b/src/Fantomas.Core.Tests/PatternMatchingTests.fs index 5b1126345a..011c906f4f 100644 --- a/src/Fantomas.Core.Tests/PatternMatchingTests.fs +++ b/src/Fantomas.Core.Tests/PatternMatchingTests.fs @@ -2262,3 +2262,26 @@ match subcategory with // Just treat as an unknown-to-LanguageService error. -> false """ + +[] +let ``comment lost after named pat pair, 2953`` () = + formatSourceString + """ +match synExpr with +| SynExpr.App( + argExpr = SynExpr.Match _ // CCC + ) + -> +Some ident.idRange +| _ -> defaultTraverse synExpr +""" + config + |> prepend newline + |> should + equal + """ +match synExpr with +| SynExpr.App(argExpr = SynExpr.Match _) -> // CCC + Some ident.idRange +| _ -> defaultTraverse synExpr +""" From d8f5d8f0e22f3e2e2fd2fd975314e4e084d701c6 Mon Sep 17 00:00:00 2001 From: dawe Date: Tue, 19 Dec 2023 22:00:46 +0100 Subject: [PATCH 2/4] add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4681412e53..15e388ab33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Fixed * Unmatched '{' error when formatting the code. [#3017](https://github.com/fsprojects/fantomas/issues/3017) +* Comment lost after named pat pair. [#2953](https://github.com/fsprojects/fantomas/issues/2953) ## 6.3.0-alpha-004 - 2023-12-06 From 09b0b5b46e04d46352054510850df433225c208c Mon Sep 17 00:00:00 2001 From: dawe Date: Tue, 19 Dec 2023 22:01:09 +0100 Subject: [PATCH 3/4] try fix which isn't idempotent --- src/Fantomas.Core/CodePrinter.fs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Fantomas.Core/CodePrinter.fs b/src/Fantomas.Core/CodePrinter.fs index 42f5474b19..f8b187173a 100644 --- a/src/Fantomas.Core/CodePrinter.fs +++ b/src/Fantomas.Core/CodePrinter.fs @@ -2594,6 +2594,7 @@ let genPat (p: Pattern) = +> genSingleTextNode node.Equals +> sepSpace +> genPat node.Pattern + |> genNode node let pats = expressionFitsOnRestOfLine From cd04b16583acbda08d7652d7185884ec3ac65cf7 Mon Sep 17 00:00:00 2001 From: dawe Date: Wed, 20 Dec 2023 14:04:52 +0100 Subject: [PATCH 4/4] fix idempotency issue by adding a conditional newline after the pats --- src/Fantomas.Core.Tests/PatternMatchingTests.fs | 5 +++-- src/Fantomas.Core/CodePrinter.fs | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Fantomas.Core.Tests/PatternMatchingTests.fs b/src/Fantomas.Core.Tests/PatternMatchingTests.fs index 011c906f4f..74db05a604 100644 --- a/src/Fantomas.Core.Tests/PatternMatchingTests.fs +++ b/src/Fantomas.Core.Tests/PatternMatchingTests.fs @@ -2281,7 +2281,8 @@ Some ident.idRange equal """ match synExpr with -| SynExpr.App(argExpr = SynExpr.Match _) -> // CCC - Some ident.idRange +| SynExpr.App( + argExpr = SynExpr.Match _ // CCC + ) -> Some ident.idRange | _ -> defaultTraverse synExpr """ diff --git a/src/Fantomas.Core/CodePrinter.fs b/src/Fantomas.Core/CodePrinter.fs index f8b187173a..042cd9a7c8 100644 --- a/src/Fantomas.Core/CodePrinter.fs +++ b/src/Fantomas.Core/CodePrinter.fs @@ -2605,7 +2605,11 @@ let genPat (p: Pattern) = +> optSingle genTyparDecls node.TyparDecls +> addSpaceBeforeParenInPattern node.Identifier +> genSingleTextNode node.OpeningParen - +> autoIndentAndNlnIfExpressionExceedsPageWidth (sepNlnWhenWriteBeforeNewlineNotEmpty +> pats) + +> autoIndentAndNlnIfExpressionExceedsPageWidth ( + sepNlnWhenWriteBeforeNewlineNotEmpty + +> pats + +> sepNlnWhenWriteBeforeNewlineNotEmpty + ) +> genSingleTextNode node.ClosingParen |> genNode node