diff --git a/src/Fantomas.Tests/InterpolatedStringTests.fs b/src/Fantomas.Tests/InterpolatedStringTests.fs index 39ed84f862..fa9408f9da 100644 --- a/src/Fantomas.Tests/InterpolatedStringTests.fs +++ b/src/Fantomas.Tests/InterpolatedStringTests.fs @@ -131,3 +131,18 @@ $"abc { x + x } xyz" """ + +[] +let ``backslash in interpolation, issue 1344`` () = + formatSourceString + false + """ +$"\"{bar}\" {1} {2}" +""" + config + |> prepend newline + |> should + equal + """ +$"\"{bar}\" {1} {2}" +""" diff --git a/src/Fantomas/TokenParser.fs b/src/Fantomas/TokenParser.fs index f99c044111..a34e4b536f 100644 --- a/src/Fantomas/TokenParser.fs +++ b/src/Fantomas/TokenParser.fs @@ -511,8 +511,9 @@ let private (|StringTextToken|_|) token = else None -let private (|InterpStringEndToken|_|) token = - if token.TokenInfo.TokenName = "INTERP_STRING_END" then +let private (|InterpStringEndOrPartToken|_|) token = + if token.TokenInfo.TokenName = "INTERP_STRING_END" + || token.TokenInfo.TokenName = "INTERP_STRING_PART" then Some token else None @@ -522,7 +523,7 @@ let escapedCharacterRegex = let rec private (|EndOfInterpolatedString|_|) tokens = match tokens with - | StringTextToken (stToken) :: InterpStringEndToken (endToken) :: rest -> Some([ stToken ], endToken, rest) + | StringTextToken (stToken) :: InterpStringEndOrPartToken (endToken) :: rest -> Some([ stToken ], endToken, rest) | StringTextToken (stToken) :: EndOfInterpolatedString (stringTokens, endToken, rest) -> Some(stToken :: stringTokens, endToken, rest) | _ -> None