fsprojects / fantomas

FSharp source code formatter
https://fsprojects.github.io/fantomas
Other
758 stars 189 forks source link

Fantomas reports an error when formatting interpolated string with tripple quotes #3049

Closed object closed 4 months ago

object commented 4 months ago

Issue created from fantomas-online

Code

let user = "abc"

let json = $$"""
{
  "id": "ABC",
  "name": "{{user}}",
};
"""

Result

let user = "abc"

let json =
    $$"""
{
  "id": "ABC",
  "name": "{{user}",
};
"""

Problem description

We configured out build to fail on fantomas errors. And if fails on this code. Here's the output from Fantomas:

Formatted │ 0 │ Ignored │ 60 │ Unchanged │ 252 │ Errored │ 1

Failed to format file: ./src/Bootstrapper/PhobosBootstrapper.fs : Formatting ./src/Bootstrapper/PhobosBootstrapper.fs leads to invalid F# code

Extra information

Options

Fantomas main branch at 2024-02-15T12:00:55Z - 0700fd6ec8555a4d65e11295a4a79a0fc9131f4e

Default Fantomas configuration

Did you know that you can ignore files when formatting by using a .fantomasignore file? PS: It's unlikely that someone else will solve your specific issue, as it's something that you have a personal stake in.

dawedawe commented 4 months ago

Thanks for reporting. But I'll close this as a duplicate of https://github.com/fsprojects/fantomas/issues/3012 It's a bug in the lexer of the compiler...

nojaf commented 4 months ago

Hi Vagif! Thanks for the report, at some point I took a look at the lexer but didn't immediately find anything. This is a more challenging problem for sure.

object commented 4 months ago

@nojaf yes, apparently it is. I checked lexer issue, and looks like it was inspected by people much more knowledgeable than me in this area.

nojaf commented 4 months ago

Hi @object, there should be a fix for this available in https://www.nuget.org/packages/fantomas/6.3.0-alpha-008

object commented 4 months ago

Cool, thanks a lot!

object commented 4 months ago

@nojaf Out of curiosity, what has been changed in the fix? I checked the commit files, and they only refer to package changes

https://github.com/fsprojects/fantomas/pull/3052/files

nojaf commented 4 months ago

The problem was fixed over the compiler side in (https://github.com/dotnet/fsharp/pull/16774, https://github.com/dotnet/fsharp/pull/16785 and https://github.com/dotnet/fsharp/pull/16796).

https://github.com/fsprojects/fantomas/pull/3052 mostly updated our source dependency to include these fixes.