From 181225ed3f15cb47f9b447be2e0669e2ec08961e Mon Sep 17 00:00:00 2001 From: nojaf Date: Sun, 4 Dec 2022 10:16:42 -0800 Subject: [PATCH 1/2] Consider trivia before equals in TypeNameNode. --- src/Fantomas.Core.Tests/DallasTests.fs | 29 +++++++++++++++++++++++ src/Fantomas.Core.Tests/SignatureTests.fs | 2 +- src/Fantomas.Core/CodePrinter2.fs | 5 +++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Fantomas.Core.Tests/DallasTests.fs b/src/Fantomas.Core.Tests/DallasTests.fs index 6a7c646fd3..b1aedadcb7 100644 --- a/src/Fantomas.Core.Tests/DallasTests.fs +++ b/src/Fantomas.Core.Tests/DallasTests.fs @@ -1726,3 +1726,32 @@ let ``type alias with trivia`` () = """ (* 1 *) type (* 2 *) A (* 3 *) = (* 4 *) int (* 5 *) """ + +[] +let ``trivia before equals in multiline implicit constructor`` () = + formatSourceString + false + """ +type TypeDefnUnionNode + ( + typeNameNode, + accessibility: SingleTextNode option, + unionCases: UnionCaseNode list, + members: MemberDefn list, + range + ) + + = + inherit NodeBase(range) +""" + config + |> prepend newline + |> should + equal + """ +type TypeDefnUnionNode + (typeNameNode, accessibility: SingleTextNode option, unionCases: UnionCaseNode list, members: MemberDefn list, range) + + = + inherit NodeBase(range) +""" diff --git a/src/Fantomas.Core.Tests/SignatureTests.fs b/src/Fantomas.Core.Tests/SignatureTests.fs index 9f765b01f3..0ded4c3a8a 100644 --- a/src/Fantomas.Core.Tests/SignatureTests.fs +++ b/src/Fantomas.Core.Tests/SignatureTests.fs @@ -1779,7 +1779,7 @@ type Meh = * timeout: int -> obj """ - { config with MaxLineLength = 5 } + { config with MaxLineLength = 12 } |> prepend newline |> should equal diff --git a/src/Fantomas.Core/CodePrinter2.fs b/src/Fantomas.Core/CodePrinter2.fs index 5852221720..a4849c9ed5 100644 --- a/src/Fantomas.Core/CodePrinter2.fs +++ b/src/Fantomas.Core/CodePrinter2.fs @@ -3189,7 +3189,10 @@ let genTypeDefn (td: TypeDefn) = if isMulti && ctx.Config.AlternativeLongMemberDefinitions then (optSingle genSingleTextNode typeName.EqualsToken) ctx else - (sepSpace +> optSingle genSingleTextNode typeName.EqualsToken) ctx) + (sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth ( + optSingle genSingleTextNode typeName.EqualsToken + )) + ctx) |> genNode typeName let members = typeDefnNode.Members From 4e88ebee133296b069803ea8aac139301533e742 Mon Sep 17 00:00:00 2001 From: nojaf Date: Sun, 4 Dec 2022 10:21:31 -0800 Subject: [PATCH 2/2] Clean up extra newline and add entry to changelog. --- CHANGELOG.md | 1 + src/Fantomas.Core/SyntaxOak.fs | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c055831d07..bbc069aa8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Fixed * Regression around `let ... in` in multiline infix application. [#2633](https://github.com/fsprojects/fantomas/pull/2633) * Improve TypeDefn. [#2636](https://github.com/fsprojects/fantomas/pull/2636) +* Trivia before equals in multiline implicit type constructor. [#2637](https://github.com/fsprojects/fantomas/pull/2637) ## [5.2.0-alpha-001] - 2022-11-30 diff --git a/src/Fantomas.Core/SyntaxOak.fs b/src/Fantomas.Core/SyntaxOak.fs index 0b489277ee..b968bb3ad7 100644 --- a/src/Fantomas.Core/SyntaxOak.fs +++ b/src/Fantomas.Core/SyntaxOak.fs @@ -2281,9 +2281,7 @@ type TypeDefnUnionNode unionCases: UnionCaseNode list, members: MemberDefn list, range - ) - - = + ) = inherit NodeBase(range) override this.Children =