Skip to content

Commit d8e7276

Browse files
etareductionnojaf
andauthored
Fix idempotency problem when reformatting type declaration with large when clause (#2897)
* Fix idempotency problem when reformatting type declaration with large when clause * Update unit test. * Add 6.0.5 release version --------- Co-authored-by: Florian Verdonck <[email protected]>
1 parent 838436b commit d8e7276

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## [6.0.5] - 2023-06-06
4+
5+
### Fixed
6+
* Idempotency problem when reformatting type declaration with large when clause. [#2896](https://github.com/fsprojects/fantomas/issues/2896)
7+
38
## [6.0.4] - 2023-06-02
49

510
### Changed

src/Fantomas.Core.Tests/FunctionDefinitionTests.fs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,3 +1353,30 @@ let inline repro (a: ^``QuotedWithIllegalChar<'T>``) = ()
13531353
"""
13541354
let inline repro (a: ^``QuotedWithIllegalChar<'T>``) = ()
13551355
"""
1356+
1357+
[<Test>]
1358+
let ``multiline member constraints on type parameters, 2896`` () =
1359+
formatSourceString
1360+
false
1361+
"""
1362+
let inline func
1363+
(arg:
1364+
'a when 'a: (member a: int) and 'a: (member b: int) and 'a: (member c: int) and 'a: (member d: int) and 'a: (member e: int))
1365+
= 0
1366+
"""
1367+
config
1368+
|> prepend newline
1369+
|> should
1370+
equal
1371+
"""
1372+
let inline func
1373+
(arg:
1374+
'a
1375+
when 'a: (member a: int)
1376+
and 'a: (member b: int)
1377+
and 'a: (member c: int)
1378+
and 'a: (member d: int)
1379+
and 'a: (member e: int))
1380+
=
1381+
0
1382+
"""

src/Fantomas.Core/CodePrinter.fs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3062,13 +3062,7 @@ let genType (t: Type) =
30623062
+> genSingleTextNode node.ClosingParen
30633063
|> genNode node
30643064
| Type.WithSubTypeConstraint tc -> genTypeConstraint tc
3065-
| Type.WithGlobalConstraints node ->
3066-
leadingExpressionIsMultiline (genType node.Type) (fun isMultiline ->
3067-
if isMultiline then
3068-
indentSepNlnUnindent (genTypeConstraints node.TypeConstraints)
3069-
else
3070-
sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth (genTypeConstraints node.TypeConstraints))
3071-
|> genNode node
3065+
| Type.WithGlobalConstraints node -> genType node.Type +> genTypeConstraints node.TypeConstraints |> genNode node
30723066
| Type.LongIdent idn -> genIdentListNode idn
30733067
| Type.AnonRecord node ->
30743068
let genStruct =

0 commit comments

Comments
 (0)