Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

If then expression inside object instantiation breaks when formatted #2819

Closed
2 of 3 tasks
LiteracyFanatic opened this issue Apr 1, 2023 · 2 comments · Fixed by #2824
Closed
2 of 3 tasks

If then expression inside object instantiation breaks when formatted #2819

LiteracyFanatic opened this issue Apr 1, 2023 · 2 comments · Fixed by #2824

Comments

@LiteracyFanatic
Copy link

Issue created from fantomas-online

Code

type Chapter() =
    member val Title: string option = Unchecked.defaultof<_> with get, set
    member val Url: string = Unchecked.defaultof<_> with get, set

let c =
    Chapter(
        Title =
            if true then
                Some ""
            else
                None
            ,
        Url = ""
    )

Result

type Chapter() =
    member val Title: string option = Unchecked.defaultof<_> with get, set
    member val Url: string = Unchecked.defaultof<_> with get, set

let c = Chapter(Title = if true then Some "" else None, Url = "")

Problem description

After formatting, this code no longer compiles. I think the issue is ambiguity with creating a tuple when the comma is on the same line as the if expression. Inserting a newline or wrapping the if expression in parenthesis fixes the compilation error.

Extra information

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

Options

Fantomas v5.2 branch at 1/1/1990

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?

@nojaf
Copy link
Contributor

nojaf commented Apr 3, 2023

Hello,

Thank you for reporting this issue.
We seem to be adding parentheses to the if when the arguments are not named.
sample

Perhaps the this logic can be extended to also take named arguments into account.

Are you interested in submitting a PR for this?

@LiteracyFanatic
Copy link
Author

Thanks for fixing this @dawedawe!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants