fsprojects / fantomas

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

Additional newline for interface in object expression #2914

Closed TheAngryByrd closed 1 year ago

TheAngryByrd commented 1 year ago

Issue created from fantomas-online

Code

type Interface1 =
    abstract member Foo1: string -> string

type Interface2 =
    abstract member Foo2: string -> string

let create () =
    { new Object() with
        override _.ToString() = ""
      interface Interface1 with
          member _.Foo1 s = s

      interface Interface2 with
          member _.Foo2 s = s }

Result

type Interface1 =
    abstract member Foo1: string -> string

type Interface2 =
    abstract member Foo2: string -> string

let create () =
    { new Object() with
        override _.ToString() = ""
      interface Interface1 with
          member _.Foo1 s = s

      interface Interface2 with
          member _.Foo2 s = s }

Problem description

Using the object expression syntax with multiple interfaces causes additional lines to be added every time when formatting. This doesn't break the code but it causes the formatting check to fail since it thinks it can add another line.

Extra information

Options

Fantomas v6.1 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.