From e2edb56ca2b9bc829852f27e30c056c0dae301df Mon Sep 17 00:00:00 2001 From: nojaf Date: Wed, 23 Dec 2020 15:27:31 +0100 Subject: [PATCH] Put SynExpr.DotGet atCurrentColumn in if expression. Fixes #1329. --- src/Fantomas.Tests/IfThenElseTests.fs | 48 +++++++++++++++++++++++++++ src/Fantomas/CodePrinter.fs | 1 + src/Fantomas/SourceParser.fs | 1 + 3 files changed, 50 insertions(+) diff --git a/src/Fantomas.Tests/IfThenElseTests.fs b/src/Fantomas.Tests/IfThenElseTests.fs index 0041e3de56..bca27c6a84 100644 --- a/src/Fantomas.Tests/IfThenElseTests.fs +++ b/src/Fantomas.Tests/IfThenElseTests.fs @@ -1690,3 +1690,51 @@ module X = () """ + +[] +let ``if expression with SynExpr.DotGet inside, 1329`` () = + formatSourceString + false + """ +let private tryGetUrlWithExactMatch (pathPattern: string) (urlPattern: string) (document: Document) = + if (UMX.untag pathPattern).Equals(UMX.untag document.Name, System.StringComparison.Ordinal) + then Some (urlPattern, normalizeRepoPath (UMX.cast pathPattern), document) else None + +let private tryGetUrlWithExactMatch + (pathPattern: string) + (urlPattern: string) + (document: Document) + = + if (UMX.untag pathPattern) + .Equals(UMX.untag document.Name, System.StringComparison.Ordinal) then + Some(urlPattern, normalizeRepoPath (UMX.cast pathPattern), document) + else + None +""" + { config with IndentSize = 2 } + |> prepend newline + |> should + equal + """ +let private tryGetUrlWithExactMatch + (pathPattern: string) + (urlPattern: string) + (document: Document) + = + if (UMX.untag pathPattern) + .Equals(UMX.untag document.Name, System.StringComparison.Ordinal) then + Some(urlPattern, normalizeRepoPath (UMX.cast pathPattern), document) + else + None + +let private tryGetUrlWithExactMatch + (pathPattern: string) + (urlPattern: string) + (document: Document) + = + if (UMX.untag pathPattern) + .Equals(UMX.untag document.Name, System.StringComparison.Ordinal) then + Some(urlPattern, normalizeRepoPath (UMX.cast pathPattern), document) + else + None +""" diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index 9e0fff85b5..61392942ea 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -2419,6 +2419,7 @@ and genExpr astContext synExpr ctx = +> (match e1 with | SynExpr.TryWith _ | SynExpr.TryFinally _ -> sepOpenT +> genExpr astContext e1 +> sepCloseT + | App (SynExpr.DotGet _, [ (Paren _) ]) -> atCurrentColumn (genExpr astContext e1) | AppTuple _ when (isConditionMultiline) -> sepOpenT +> atCurrentColumn (genExpr astContext e1) diff --git a/src/Fantomas/SourceParser.fs b/src/Fantomas/SourceParser.fs index 02d69c2fda..bf394ddafa 100644 --- a/src/Fantomas/SourceParser.fs +++ b/src/Fantomas/SourceParser.fs @@ -799,6 +799,7 @@ let (|App|_|) e = // captures application with single tuple arg let (|AppTuple|_|) = function + | App (SynExpr.DotGet _, [ (Paren (_, Tuple _, _)) ]) -> None | App (e, [ (Paren (lpr, Tuple args, rpr)) ]) -> Some(e, lpr, args, rpr) | App (e, [ (Paren (lpr, singleExpr, rpr)) ]) -> match singleExpr with