diff --git a/src/Fantomas.Tests/LambdaTests.fs b/src/Fantomas.Tests/LambdaTests.fs index eef65d6824..b1ff200f7a 100644 --- a/src/Fantomas.Tests/LambdaTests.fs +++ b/src/Fantomas.Tests/LambdaTests.fs @@ -897,3 +897,37 @@ let x = """ let x = fun _ -> fun _ -> "hello" """ + +[] +let ``wild card parameters in lambda, 1789`` () = + formatSourceString + false + """ +let elifs = + es + |> List.collect (fun (e1, e2, _, _, _) -> [ visit e1; visit e2 ]) +""" + config + |> prepend newline + |> should + equal + """ +let elifs = + es + |> List.collect (fun (e1, e2, _, _, _) -> [ visit e1; visit e2 ]) +""" + +[] +let ``leading and trailing wild card parameters in lambda`` () = + formatSourceString + false + """ +List.map (fun (_, _, _, _, body, _) -> visit body) andBangs +""" + config + |> prepend newline + |> should + equal + """ +List.map (fun (_, _, _, _, body, _) -> visit body) andBangs +""" diff --git a/src/Fantomas/SourceParser.fs b/src/Fantomas/SourceParser.fs index d67bdae871..11f88db93a 100644 --- a/src/Fantomas/SourceParser.fs +++ b/src/Fantomas/SourceParser.fs @@ -1250,7 +1250,10 @@ let (|Clause|) (SynMatchClause.Clause (p, eo, e, _, _)) = (p, e, eo) let (|Lambda|_|) = function | SynExpr.Lambda (_, _, _, _, Some (pats, body), range) -> - let maxDepth = List.length pats + let maxDepth = + match pats with + | [ PatParen (PatTuple ts) ] -> List.length ts + | _ -> List.length pats // find the body expression from the last lambda let rec visit (currentDepth: int) (e: SynExpr) : SynExpr = if currentDepth < maxDepth then