From 38bd8e77191675c90e1b8a95a1b985beac4a85aa Mon Sep 17 00:00:00 2001 From: johnW_ret <19534013+johnW-ret@users.noreply.github.com> Date: Fri, 13 Sep 2024 16:05:14 -0500 Subject: [PATCH 1/3] Fixed unnecessary parentheses in last tuple item (fsprojects#3082) --- src/Fantomas.Core.Tests/OperatorTests.fs | 2 +- src/Fantomas.Core.Tests/TupleTests.fs | 14 ++++++++++++++ src/Fantomas.Core/CodePrinter.fs | 9 +++++---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Fantomas.Core.Tests/OperatorTests.fs b/src/Fantomas.Core.Tests/OperatorTests.fs index df1f578873..75d2c59ad7 100644 --- a/src/Fantomas.Core.Tests/OperatorTests.fs +++ b/src/Fantomas.Core.Tests/OperatorTests.fs @@ -1354,7 +1354,7 @@ fun i -> sprintf "%i" i, fun () -> i |> should equal """ -(fun i -> sprintf "%i" i, (fun () -> i)) |> List.init foo |> Map.ofList +(fun i -> sprintf "%i" i, fun () -> i) |> List.init foo |> Map.ofList """ [] diff --git a/src/Fantomas.Core.Tests/TupleTests.fs b/src/Fantomas.Core.Tests/TupleTests.fs index a5c7d11ce3..d8a8fa84e1 100644 --- a/src/Fantomas.Core.Tests/TupleTests.fs +++ b/src/Fantomas.Core.Tests/TupleTests.fs @@ -551,3 +551,17 @@ let (clReducedValues, // some comment 1 clSecondActualKeys): ClArray<'a> * ClArray * ClArray = reduce processor DeviceOnly resultLength clOffsets clFirstKeys clSecondKeys clValues """ + +[] +let ``unneeded parentheses on last tuple item, 3082`` () = + formatSourceString + """ +func ("/health", fun a b -> "") +""" + config + |> prepend newline + |> should + equal + """ +func ("/health", fun a b -> "") +""" diff --git a/src/Fantomas.Core/CodePrinter.fs b/src/Fantomas.Core/CodePrinter.fs index 6e68cf3817..3b54fbaaa5 100644 --- a/src/Fantomas.Core/CodePrinter.fs +++ b/src/Fantomas.Core/CodePrinter.fs @@ -1887,12 +1887,13 @@ let genTupleExpr (node: ExprTupleNode) = | _ -> expr let shortExpression = - col sepNone node.Items (function - | Choice1Of2 e -> + coli sepNone node.Items (fun i c -> + match i, c with + | i, Choice1Of2 e -> match e with - | IsLambdaOrIfThenElse e -> sepOpenT +> genExpr e +> sepCloseT + | IsLambdaOrIfThenElse e when i <> Array.length node.Children - 1 -> sepOpenT +> genExpr e +> sepCloseT | e -> genExpr (wrapInfixAppRhsInParenIfNeeded e) - | Choice2Of2 comma -> genSingleTextNode comma +> addSpaceIfSpaceAfterComma) + | _, Choice2Of2 comma -> genSingleTextNode comma +> addSpaceIfSpaceAfterComma) let longExpression = genTupleMultiline node From abcc17a2acbcded9245ae66cbb82495f2c0a7d8c Mon Sep 17 00:00:00 2001 From: nojaf Date: Sat, 14 Sep 2024 14:12:07 +0200 Subject: [PATCH 2/3] Slight refactor --- src/Fantomas.Core/CodePrinter.fs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Fantomas.Core/CodePrinter.fs b/src/Fantomas.Core/CodePrinter.fs index 3a29e6a2c6..357eaf63af 100644 --- a/src/Fantomas.Core/CodePrinter.fs +++ b/src/Fantomas.Core/CodePrinter.fs @@ -1888,13 +1888,15 @@ let genTupleExpr (node: ExprTupleNode) = | _ -> expr let shortExpression = + let lastIndex = Array.length node.Children - 1 + coli sepNone node.Items (fun i c -> - match i, c with - | i, Choice1Of2 e -> + match c with + | Choice1Of2 e -> match e with - | IsLambdaOrIfThenElse e when i <> Array.length node.Children - 1 -> sepOpenT +> genExpr e +> sepCloseT + | IsLambdaOrIfThenElse e when i <> lastIndex -> sepOpenT +> genExpr e +> sepCloseT | e -> genExpr (wrapInfixAppRhsInParenIfNeeded e) - | _, Choice2Of2 comma -> genSingleTextNode comma +> addSpaceIfSpaceAfterComma) + | Choice2Of2 comma -> genSingleTextNode comma +> addSpaceIfSpaceAfterComma) let longExpression = genTupleMultiline node From 02a36900f5cee0c48bf3821996a2d0700d3db03a Mon Sep 17 00:00:00 2001 From: nojaf Date: Sat, 14 Sep 2024 14:13:00 +0200 Subject: [PATCH 3/3] Add changelog entry --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a6b1e82b4..62c59b8641 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 6.3.15 - 2024-09-14 + +### Fixed +* Non needed parentheses are added around lambda call from tuple/members [#3082](https://github.com/fsprojects/fantomas/issues/3082) + ## 6.3.14 - 2024-09-14 ### Fixed