fantomas icon indicating copy to clipboard operation
fantomas copied to clipboard

Trivia around paren lambda not restore

Open edgarfgp opened this issue 1 year ago • 2 comments

Issue created from fantomas-online

Code

Program.statefulWithCmdMsg
|> (fun program ->
            { program with
                CanReuseView = ViewHelper.canReuseView
                SyncAction =
                    (fun fn ->
                        program.SyncAction
                            (
#if IOS
                            // iOS animates by default layout changes, we don't want that
                            fun () -> UIKit.UIView.PerformWithoutAnimation(fn)
#else
                            fn
#endif
                        )) })

Error

System.FormatException: Fantomas is trying to format the input multiple times due to the detection of multiple defines.
There is a problem with merging all the code back together.
[] has 7 fragments
[IOS] has 9 fragments
Please raise an issue at https://fsprojects.github.io/fantomas-tools/#/fantomas/preview.
   at Fantomas.Core.MultipleDefineCombinations.mergeMultipleFormatResults(FormatConfig config, FSharpList`1 results) in /_//src/Fantomas.Core/MultipleDefineCombinations.fs:line 209
   at [email protected](FSharpList`1 results) in /_//src/Fantomas.Core/CodeFormatterImpl.fs:line 99
   at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvokeNoHijackCheck[a,b](AsyncActivation`1 ctxt, b result1, FSharpFunc`2 userCode) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 525
   at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112

Problem description

Please describe here the Fantomas problem you encountered. Check out our Contribution Guidelines.

Extra information

  • [ ] The formatted result breaks my code.
  • [ ] The formatted result gives compiler warnings.
  • [x] I or my company would be willing to help fix this.

Options

Fantomas main branch at 2023-04-14T07:44:28Z - dfc29ff1c5f8d70b8fd580651a79d5de32febab8

Default Fantomas configuration

Did you know that you can ignore files when formatting from fantomas-tool or the FAKE targets by using a .fantomasignore file?

edgarfgp avatar Apr 14 '23 13:04 edgarfgp

Hi Edgar,

Thank you for reporting this issue. I'm going to write some documentation on how you can solve this problem. There is a way to pinpoint where the problem exactly lies.

Also, please try and make your sample as small as possible.

You will probably need to remove |> genNode lambdaNode in

https://github.com/fsprojects/fantomas/blob/7575a6ce06e44e18867fd6e2ef66bd6b9433a904/src/Fantomas.Core/CodePrinter.fs#L2371

But this will make more sense once the docs are there.

nojaf avatar Apr 14 '23 15:04 nojaf

See https://fsprojects.github.io/fantomas/docs/contributors/Multiple%20Times.html

nojaf avatar Apr 14 '23 15:04 nojaf