fsprojects / fantomas

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

Long parameter attribute gives weird line break before type annotation #3073

Open cmeeren opened 2 months ago

cmeeren commented 2 months ago

Issue created from fantomas-online

Code and expected output

type Query() =

    member _.SearchOrders
        (
            [<GraphQLType(typeof<ListType<NonNullType<InputObjectType<SearchOrdersSortItem>>>>)>]
            sort: SearchOrdersSortItem list option
        ) =
        ()

Result

type Query() =

    member _.SearchOrders
        ([<GraphQLType(typeof<ListType<NonNullType<InputObjectType<SearchOrdersSortItem>>>>)>] sort:
            SearchOrdersSortItem list option)
        =
        ()

Problem description

When a parameter has a long attribute (several shorter attributes would presumably also give the same effect), the line is broken before the type annotation.

While this particular case is not covered explicitly by the F# code formatting guidelines, the guidelines specify attributes on a separate line in all other (non-parameter) cases, so I believe it would be most consistent to place the attribute on a separate line also in the case of very long attributes.

Extra information

Options

Fantomas main branch at 1/1/1990

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.