File tree 3 files changed +30
-2
lines changed 3 files changed +30
-2
lines changed Original file line number Diff line number Diff line change 1
1
# Changelog
2
2
3
+ ## 6.3.11 - 2024-08-16
4
+
5
+ ### Fixed
6
+ * F# Range Operator (\.\. ) with negative numbers produces invalid F# code and idempotent. [ #3105 ] ( https://github.com/fsprojects/fantomas/issues/3105 )
7
+
3
8
## 6.3.10 - 2024-07-12
4
9
5
10
### Changed
Original file line number Diff line number Diff line change @@ -2292,3 +2292,17 @@ let fns =
2292
2292
Functions[Checked false
2293
2293
OnChange(fun _ -> s |> updateSettings)]
2294
2294
"""
2295
+
2296
+ [<Test>]
2297
+ let ``negative numbers in range operator , 3105`` () =
2298
+ formatSourceString
2299
+ """
2300
+ [|-24.0 .. -1.0 .. -30.0|]
2301
+ """
2302
+ config
2303
+ |> prepend newline
2304
+ |> should
2305
+ equal
2306
+ """
2307
+ [| -24.0 .. -1.0 .. -30.0 |]
2308
+ """
Original file line number Diff line number Diff line change @@ -1546,10 +1546,19 @@ let genExpr (e: Expr) =
1546
1546
|> genNode node
1547
1547
| Expr.IndexRangeWildcard node -> genSingleTextNode node
1548
1548
| Expr.TripleNumberIndexRange node ->
1549
+ let isNegativeFloat ( text : string ) =
1550
+ text.StartsWith( " -" , StringComparison.Ordinal) && text.Contains( " ." )
1551
+
1552
+ let genDots ( before : SingleTextNode ) ( dots : SingleTextNode ) ( after : SingleTextNode ) =
1553
+ if not ( isNegativeFloat before.Text) && not ( isNegativeFloat after.Text) then
1554
+ genSingleTextNode dots
1555
+ else
1556
+ sepSpace +> genSingleTextNode dots +> sepSpace
1557
+
1549
1558
genSingleTextNode node.Start
1550
- +> genSingleTextNode node.StartDots
1559
+ +> genDots node.Start node. StartDots node.Center
1551
1560
+> genSingleTextNode node.Center
1552
- +> genSingleTextNode node.EndDots
1561
+ +> genDots node.Center node.EndDots node.EndDots
1553
1562
+> genSingleTextNode node.End
1554
1563
|> genNode node
1555
1564
| Expr.IndexRange node ->
You can’t perform that action at this time.
0 commit comments