diff --git a/src/Fantomas.Core.Tests/ColMultilineItemTests.fs b/src/Fantomas.Core.Tests/ColMultilineItemTests.fs index 3fb464a79e..1c5a97b2d5 100644 --- a/src/Fantomas.Core.Tests/ColMultilineItemTests.fs +++ b/src/Fantomas.Core.Tests/ColMultilineItemTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.ColMultilineItemTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``two short let binding should not have extra newline`` () = @@ -388,7 +389,7 @@ let blah<'a> config : Type = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true } diff --git a/src/Fantomas.Core.Tests/CommentTests.fs b/src/Fantomas.Core.Tests/CommentTests.fs index c95fe23515..ade6081835 100644 --- a/src/Fantomas.Core.Tests/CommentTests.fs +++ b/src/Fantomas.Core.Tests/CommentTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.CommentTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``should keep sticky-to-the-left comments after nowarn directives`` () = @@ -1381,7 +1382,7 @@ open Something SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true diff --git a/src/Fantomas.Core.Tests/ComputationExpressionTests.fs b/src/Fantomas.Core.Tests/ComputationExpressionTests.fs index 8facb22634..6d352b2074 100644 --- a/src/Fantomas.Core.Tests/ComputationExpressionTests.fs +++ b/src/Fantomas.Core.Tests/ComputationExpressionTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.ComputationExpressionTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``async workflows`` () = @@ -1587,7 +1588,7 @@ let ``new line between let and let bang, 879`` () = SpaceBeforeUppercaseInvocation = true IndentSize = 2 SpaceAroundDelimiter = false - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned MaxInfixOperatorExpression = 50 } |> prepend newline |> should diff --git a/src/Fantomas.Core.Tests/ControlStructureTests.fs b/src/Fantomas.Core.Tests/ControlStructureTests.fs index aba0406c82..d3bdfb35e8 100644 --- a/src/Fantomas.Core.Tests/ControlStructureTests.fs +++ b/src/Fantomas.Core.Tests/ControlStructureTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.ControlStructureTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``if/then/else block`` () = @@ -956,7 +957,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true diff --git a/src/Fantomas.Core.Tests/DallasTests.fs b/src/Fantomas.Core.Tests/DallasTests.fs index 75c2d0be74..94b0c586e1 100644 --- a/src/Fantomas.Core.Tests/DallasTests.fs +++ b/src/Fantomas.Core.Tests/DallasTests.fs @@ -3,6 +3,7 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``proof of concept`` () = @@ -1850,9 +1851,7 @@ let someTest input1 input2 = Expect.equal input1 input2 "didn't equal" } """ - { config with - ExperimentalStroustrupStyle = true - MultilineBlockBracketsOnSameColumn = true } + { config with MultilineBracketStyle = ExperimentalStroustrup } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/DotGetTests.fs b/src/Fantomas.Core.Tests/DotGetTests.fs index 48b789bada..eb98662232 100644 --- a/src/Fantomas.Core.Tests/DotGetTests.fs +++ b/src/Fantomas.Core.Tests/DotGetTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.DotGetTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``a TypeApp inside a DotGet should stay on the same line, 994`` () = @@ -760,7 +761,7 @@ let blah = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true } @@ -797,7 +798,7 @@ let blah = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true } @@ -1061,7 +1062,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true MultiLineLambdaClosingNewline = true } |> prepend newline @@ -1101,7 +1102,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true MultiLineLambdaClosingNewline = true } |> prepend newline diff --git a/src/Fantomas.Core.Tests/DotIndexedGetTests.fs b/src/Fantomas.Core.Tests/DotIndexedGetTests.fs index 710246fa66..e2afb14875 100644 --- a/src/Fantomas.Core.Tests/DotIndexedGetTests.fs +++ b/src/Fantomas.Core.Tests/DotIndexedGetTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.DotIndexedGetTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``multiline function application inside DotIndexedGet`` () = @@ -85,7 +86,7 @@ let mySampleMethod() = SpaceBeforeLowercaseInvocation = false SpaceBeforeColon = true MaxIfThenElseShortWidth = 25 - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true diff --git a/src/Fantomas.Core.Tests/KeepIndentInBranchTests.fs b/src/Fantomas.Core.Tests/KeepIndentInBranchTests.fs index 04d2d164fb..8e141ea453 100644 --- a/src/Fantomas.Core.Tests/KeepIndentInBranchTests.fs +++ b/src/Fantomas.Core.Tests/KeepIndentInBranchTests.fs @@ -942,7 +942,7 @@ let main (args : Options) = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true @@ -1018,7 +1018,7 @@ let main (args : Options) = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true @@ -1099,7 +1099,7 @@ and [] Bar<'context, 'a> = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned ExperimentalKeepIndentInBranch = true AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true @@ -1205,7 +1205,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true @@ -1272,7 +1272,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true @@ -1426,7 +1426,7 @@ module Foo = """ { config with MultiLineLambdaClosingNewline = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlternativeLongMemberDefinitions = true } |> prepend newline |> should @@ -1934,7 +1934,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true @@ -1993,7 +1993,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true @@ -2042,7 +2042,7 @@ module Foo = """ { config with MaxLineLength = 100 - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned MultiLineLambdaClosingNewline = true ExperimentalKeepIndentInBranch = true MaxInfixOperatorExpression = 50 } @@ -2121,7 +2121,7 @@ module Foo = """ { config with MaxLineLength = 100 - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned MultiLineLambdaClosingNewline = true ExperimentalKeepIndentInBranch = true MaxInfixOperatorExpression = 50 } diff --git a/src/Fantomas.Core.Tests/LambdaTests.fs b/src/Fantomas.Core.Tests/LambdaTests.fs index eed62457f9..e14d13ba58 100644 --- a/src/Fantomas.Core.Tests/LambdaTests.fs +++ b/src/Fantomas.Core.Tests/LambdaTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.LambdaTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``keep comment after arrow`` () = @@ -424,7 +425,7 @@ let projectIntoMap projection = SpaceAroundDelimiter = false MaxInfixOperatorExpression = 40 MaxFunctionBindingWidth = 60 - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/LetBindingTests.fs b/src/Fantomas.Core.Tests/LetBindingTests.fs index c41a65767d..acbd0e1b1a 100644 --- a/src/Fantomas.Core.Tests/LetBindingTests.fs +++ b/src/Fantomas.Core.Tests/LetBindingTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.LetBindingTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``let in should be preserved`` () = @@ -1650,7 +1651,7 @@ stepLog.LogInformation ( SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned NewlineBetweenTypeDefinitionAndMembers = true AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true @@ -1701,7 +1702,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned NewlineBetweenTypeDefinitionAndMembers = true AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true diff --git a/src/Fantomas.Core.Tests/ListTests.fs b/src/Fantomas.Core.Tests/ListTests.fs index 423bb8c2b2..0ee4fde2f0 100644 --- a/src/Fantomas.Core.Tests/ListTests.fs +++ b/src/Fantomas.Core.Tests/ListTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.ListTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``array indices`` () = @@ -1943,7 +1944,7 @@ let value = [ { config with MaxIfThenElseShortWidth = 120 MaxArrayOrListWidth = 120 - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/MultiLineLambdaClosingNewlineTests.fs b/src/Fantomas.Core.Tests/MultiLineLambdaClosingNewlineTests.fs index 0945450d5e..91231f374c 100644 --- a/src/Fantomas.Core.Tests/MultiLineLambdaClosingNewlineTests.fs +++ b/src/Fantomas.Core.Tests/MultiLineLambdaClosingNewlineTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.MultiLineLambdaClosingNewlineTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let defaultConfig = config @@ -576,7 +577,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned MultiLineLambdaClosingNewline = true ExperimentalKeepIndentInBranch = true } |> prepend newline @@ -622,7 +623,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned MultiLineLambdaClosingNewline = true ExperimentalKeepIndentInBranch = true } |> prepend newline diff --git a/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs b/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs index 3647caaa36..64bc6f0bc3 100644 --- a/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs +++ b/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs @@ -3,10 +3,11 @@ module Fantomas.Core.Tests.MultilineBlockBracketsOnSameColumnArrayOrListTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned SpaceBeforeColon = true SpaceBeforeSemicolon = true } @@ -416,7 +417,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true MultiLineLambdaClosingNewline = true MaxArrayOrListWidth = 40 } diff --git a/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnRecordTests.fs b/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnRecordTests.fs index 14d6eca02b..591b8a7f46 100644 --- a/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnRecordTests.fs +++ b/src/Fantomas.Core.Tests/MultilineBlockBracketsOnSameColumnRecordTests.fs @@ -7,7 +7,7 @@ open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned SpaceBeforeColon = true SpaceBeforeSemicolon = true } @@ -1125,7 +1125,7 @@ module WatcherTests = """ { config with MaxLineLength = 80 - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/NumberOfItemsListOrArrayTests.fs b/src/Fantomas.Core.Tests/NumberOfItemsListOrArrayTests.fs index 838a96772f..800824316d 100644 --- a/src/Fantomas.Core.Tests/NumberOfItemsListOrArrayTests.fs +++ b/src/Fantomas.Core.Tests/NumberOfItemsListOrArrayTests.fs @@ -86,8 +86,7 @@ h [ longValueThatIsALotOfCharactersSoooooLong; longValueThatIsALotOfCharactersSo """ { config with ArrayOrListMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } + MultilineBracketStyle = ExperimentalStroustrup } |> prepend newline |> should equal @@ -122,7 +121,7 @@ List.map (fun x -> x * x) [1;2;] """ { config with ArrayOrListMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal @@ -164,7 +163,7 @@ List.map (fun x -> x * x) [|1;2;|] """ { config with ArrayOrListMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal @@ -205,8 +204,7 @@ h [ longValueThatIsALotOfCharactersSoooooLong; longValueThatIsALotOfCharactersSo """ { config with ArrayOrListMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } + MultilineBracketStyle = ExperimentalStroustrup } |> prepend newline |> should equal @@ -240,8 +238,7 @@ h [ longValueThatIsALotOfCharactersSoooooLong; longValueThatIsALotOfCharactersSo """ { config with ArrayOrListMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } + MultilineBracketStyle = ExperimentalStroustrup } |> prepend newline |> should equal @@ -273,8 +270,7 @@ h [ longValueThatIsALotOfCharactersSoooooLong; longValueThatIsALotOfCharactersSo """ { config with ArrayOrListMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } + MultilineBracketStyle = ExperimentalStroustrup } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/NumberOfItemsRecordTests.fs b/src/Fantomas.Core.Tests/NumberOfItemsRecordTests.fs index afd85b5ffb..aab2fe431f 100644 --- a/src/Fantomas.Core.Tests/NumberOfItemsRecordTests.fs +++ b/src/Fantomas.Core.Tests/NumberOfItemsRecordTests.fs @@ -858,7 +858,7 @@ type S = { AReallyLongExpressionThatIsMuchLongerThan50Characters: int } """ { config with RecordMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal @@ -949,7 +949,7 @@ g s' { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } """ { config with RecordMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal @@ -1069,7 +1069,7 @@ g s' {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} """ { config with RecordMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal @@ -1158,7 +1158,7 @@ type B = {| x: AReallyLongTypeThatIsMuchLongerThan40Characters |} """ { config with RecordMultilineFormatter = NumberOfItems - MultilineBlockBracketsOnSameColumn = true } + MultilineBracketStyle = Aligned } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/OperatorTests.fs b/src/Fantomas.Core.Tests/OperatorTests.fs index ead961434e..d5e3e19d4c 100644 --- a/src/Fantomas.Core.Tests/OperatorTests.fs +++ b/src/Fantomas.Core.Tests/OperatorTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.OperatorTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``should format prefix operators`` () = @@ -1107,7 +1108,7 @@ module Foo = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned NewlineBetweenTypeDefinitionAndMembers = true AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true diff --git a/src/Fantomas.Core.Tests/RecordTests.fs b/src/Fantomas.Core.Tests/RecordTests.fs index 47c7eb71ad..7e32c5c2cb 100644 --- a/src/Fantomas.Core.Tests/RecordTests.fs +++ b/src/Fantomas.Core.Tests/RecordTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.RecordTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``record declaration`` () = @@ -2127,7 +2128,7 @@ let compareThings (first: Thing) (second: Thing) = Bar = first.Bar } """ - { config with MultilineBlockBracketsOnSameColumn = true } + { config with MultilineBracketStyle = Aligned } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/SignatureTests.fs b/src/Fantomas.Core.Tests/SignatureTests.fs index 0ded4c3a8a..86add6a3ce 100644 --- a/src/Fantomas.Core.Tests/SignatureTests.fs +++ b/src/Fantomas.Core.Tests/SignatureTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.SignatureTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig // the current behavior results in a compile error since "(string * string) list" is converted to "string * string list" [] @@ -1527,7 +1528,7 @@ and [] Bang = override GetHashCode : unit -> int """ { config with - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned NewlineBetweenTypeDefinitionAndMembers = false } |> prepend newline |> should diff --git a/src/Fantomas.Core.Tests/SpaceBeforeClassConstructorTests.fs b/src/Fantomas.Core.Tests/SpaceBeforeClassConstructorTests.fs index c464b58add..6767e9951d 100644 --- a/src/Fantomas.Core.Tests/SpaceBeforeClassConstructorTests.fs +++ b/src/Fantomas.Core.Tests/SpaceBeforeClassConstructorTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.SpaceBeforeClassConstructorTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let spaceBeforeConfig = { config with SpaceBeforeClassConstructor = true } @@ -306,7 +307,7 @@ type DerivedClass = { inherit BaseClass(str1) string2 = str2 } """ - { spaceBeforeConfig with MultilineBlockBracketsOnSameColumn = true } + { spaceBeforeConfig with MultilineBracketStyle = Aligned } |> prepend newline |> should equal diff --git a/src/Fantomas.Core.Tests/Stroustrup/DotIndexedSetExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/DotIndexedSetExpressionTests.fs index 0afbf94108..88d69a4e49 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/DotIndexedSetExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/DotIndexedSetExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/DotSetExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/DotSetExpressionTests.fs index d57f6b7558..ae90aaf711 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/DotSetExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/DotSetExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/ElmishTests.fs b/src/Fantomas.Core.Tests/Stroustrup/ElmishTests.fs index 130fef3633..da2f95bad8 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/ElmishTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/ElmishTests.fs @@ -3,11 +3,9 @@ module Fantomas.Core.Tests.ElmishTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig -let config = - { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } +let config = { config with MultilineBracketStyle = ExperimentalStroustrup } [] let ``long named arguments should go on newline`` () = diff --git a/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationDualListTests.fs b/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationDualListTests.fs index 16ee007437..5b71d71beb 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationDualListTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationDualListTests.fs @@ -3,11 +3,9 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig -let config = - { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } +let config = { config with MultilineBracketStyle = ExperimentalStroustrup } [] let ``two short lists`` () = diff --git a/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationSingleListTests.fs b/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationSingleListTests.fs index 3079d8d32f..0c71a913fa 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationSingleListTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/FunctionApplicationSingleListTests.fs @@ -3,11 +3,9 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig -let config = - { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } +let config = { config with MultilineBracketStyle = ExperimentalStroustrup } [] let ``short function application`` () = diff --git a/src/Fantomas.Core.Tests/Stroustrup/KeepIndentInBranchExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/KeepIndentInBranchExpressionTests.fs index 4b72781fa4..986252a46e 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/KeepIndentInBranchExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/KeepIndentInBranchExpressionTests.fs @@ -3,14 +3,14 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig // ExperimentalKeepIndentInBranch has precedence over ExperimentalStroustrupStyle let config = { config with - MultilineBlockBracketsOnSameColumn = true ExperimentalKeepIndentInBranch = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } // There currently is no conflict with this setting, but I'm guessing the case was never brought up. diff --git a/src/Fantomas.Core.Tests/Stroustrup/LambdaExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/LambdaExpressionTests.fs index 9f46575e15..74b944bd77 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/LambdaExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/LambdaExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/LetOrUseBangExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/LetOrUseBangExpressionTests.fs index dfbbe42bfd..e04c7b04ac 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/LetOrUseBangExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/LetOrUseBangExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/LongIdentSetExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/LongIdentSetExpressionTests.fs index 008aa12958..f230f6db86 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/LongIdentSetExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/LongIdentSetExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/MultiLineLambdaClosingNewlineExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/MultiLineLambdaClosingNewlineExpressionTests.fs index a77b28cd87..721ddc531f 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/MultiLineLambdaClosingNewlineExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/MultiLineLambdaClosingNewlineExpressionTests.fs @@ -3,12 +3,12 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true MultiLineLambdaClosingNewline = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } // TODO: figure out what should happen when you mix MultiLineLambdaClosingNewline and Stroustrup diff --git a/src/Fantomas.Core.Tests/Stroustrup/NamedArgumentExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/NamedArgumentExpressionTests.fs index bcea6bf556..716a642543 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/NamedArgumentExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/NamedArgumentExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SetExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SetExpressionTests.fs index e74efc0a3b..6ad063f916 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SetExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SetExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionExpressionTests.fs index f999e3e707..f48d866057 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionLongPatternExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionLongPatternExpressionTests.fs index 353d613183..b47c444e4a 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionLongPatternExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionLongPatternExpressionTests.fs @@ -2,13 +2,13 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with MaxLineLength = 80 - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } // TODO: conclude on what should happen here diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionWithReturnTypeExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionWithReturnTypeExpressionTests.fs index 7020752557..9b2f224d53 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionWithReturnTypeExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynBindingFunctionWithReturnTypeExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynBindingValueExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynBindingValueExpressionTests.fs index 25b0523a8c..6ae2845d85 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynBindingValueExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynBindingValueExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynExprAndBangExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynExprAndBangExpressionTests.fs index a6770ff063..b330cf93b5 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynExprAndBangExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynExprAndBangExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynMatchClauseExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynMatchClauseExpressionTests.fs index d2c10a1905..153490a445 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynMatchClauseExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynMatchClauseExpressionTests.fs @@ -3,11 +3,11 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSigReprSimpleTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSigReprSimpleTests.fs index 237de37db0..bc471175b5 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSigReprSimpleTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSigReprSimpleTests.fs @@ -3,11 +3,9 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig -let config = - { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } +let config = { config with MultilineBracketStyle = ExperimentalStroustrup } [] let ``record type definition`` () = diff --git a/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSimpleReprRecordTests.fs b/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSimpleReprRecordTests.fs index cbc4857714..460c628087 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSimpleReprRecordTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/SynTypeDefnSimpleReprRecordTests.fs @@ -3,11 +3,9 @@ open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig -let config = - { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true } +let config = { config with MultilineBracketStyle = ExperimentalStroustrup } [] let ``record type definition`` () = diff --git a/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnBangExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnBangExpressionTests.fs index 505ceafdb1..e23c3b8df8 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnBangExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnBangExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnExpressionTests.fs b/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnExpressionTests.fs index b87fc1fe8c..6828057ab7 100644 --- a/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnExpressionTests.fs +++ b/src/Fantomas.Core.Tests/Stroustrup/YieldOrReturnExpressionTests.fs @@ -2,12 +2,12 @@ open NUnit.Framework open FsUnit +open Fantomas.Core.FormatConfig open Fantomas.Core.Tests.TestHelper let config = { config with - MultilineBlockBracketsOnSameColumn = true - ExperimentalStroustrupStyle = true + MultilineBracketStyle = ExperimentalStroustrup MaxArrayOrListWidth = 40 } [] diff --git a/src/Fantomas.Core.Tests/TypeDeclarationTests.fs b/src/Fantomas.Core.Tests/TypeDeclarationTests.fs index 882e2ebaa8..97bf3cdf7e 100644 --- a/src/Fantomas.Core.Tests/TypeDeclarationTests.fs +++ b/src/Fantomas.Core.Tests/TypeDeclarationTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.TypeDeclarationTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``exception declarations`` () = @@ -2818,7 +2819,7 @@ and [] Bar<'context, 'a> = SpaceBeforeMember = true SpaceBeforeColon = true SpaceBeforeSemicolon = true - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned AlignFunctionSignatureToIndentation = true AlternativeLongMemberDefinitions = true MultiLineLambdaClosingNewline = true diff --git a/src/Fantomas.Core.Tests/UnionTests.fs b/src/Fantomas.Core.Tests/UnionTests.fs index 16b80fb624..4f22bc1f1d 100644 --- a/src/Fantomas.Core.Tests/UnionTests.fs +++ b/src/Fantomas.Core.Tests/UnionTests.fs @@ -3,6 +3,7 @@ module Fantomas.Core.Tests.UnionsTests open NUnit.Framework open FsUnit open Fantomas.Core.Tests.TestHelper +open Fantomas.Core.FormatConfig [] let ``enums declaration`` () = @@ -700,7 +701,7 @@ type CardValue = ] """ { config with - MultilineBlockBracketsOnSameColumn = true + MultilineBracketStyle = Aligned NewlineBetweenTypeDefinitionAndMembers = false } |> prepend newline |> should diff --git a/src/Fantomas.Core/CodePrinter2.fs b/src/Fantomas.Core/CodePrinter2.fs index 38481dc989..f201d52759 100644 --- a/src/Fantomas.Core/CodePrinter2.fs +++ b/src/Fantomas.Core/CodePrinter2.fs @@ -3,6 +3,7 @@ open System open Fantomas.Core.Context open Fantomas.Core.SyntaxOak +open Fantomas.Core.FormatConfig let noBreakInfixOps = set [| "="; ">"; "<"; "%" |] let newLineInfixOps = set [ "|>"; "||>"; "|||>"; ">>"; ">>=" ] @@ -395,7 +396,7 @@ let genExpr (e: Expr) = (onlyIfNot isFixed sepSpace +> !-node.Closing.Text +> leaveNode node.Closing) ctx)) ) - ifAlignBrackets genMultiLineArrayOrListAlignBrackets genMultiLineArrayOrList + ifAlignOrStroustrupBrackets genMultiLineArrayOrListAlignBrackets genMultiLineArrayOrList fun ctx -> let alwaysMultiline = @@ -548,7 +549,7 @@ let genExpr (e: Expr) = ctx)) ctx - ifAlignBrackets genMultilineRecordInstanceAlignBrackets genMultilineRecordInstance + ifAlignOrStroustrupBrackets genMultilineRecordInstanceAlignBrackets genMultilineRecordInstance fun ctx -> let size = getRecordSize ctx node.Fields @@ -640,7 +641,7 @@ let genExpr (e: Expr) = ifElse node.IsStruct !- "struct " sepNone +> genAnonRecord - ifAlignBrackets genMultilineAnonRecordAlignBrackets genMultilineAnonRecord + ifAlignOrStroustrupBrackets genMultilineAnonRecordAlignBrackets genMultilineAnonRecord fun (ctx: Context) -> let size = getRecordSize ctx node.Fields @@ -709,7 +710,7 @@ let genExpr (e: Expr) = +> genSingleTextNode node.ClosingBrace ) - ifAlignBrackets genObjExprAlignBrackets genObjExpr + ifAlignOrStroustrupBrackets genObjExprAlignBrackets genObjExpr |> genNode node | Expr.While node -> atCurrentColumn ( @@ -2552,7 +2553,7 @@ let genPat (p: Pattern) = |> atCurrentColumnIndent let multilineExpressionIfAlignBrackets = - ifAlignBrackets multilineRecordExprAlignBrackets multilineRecordExpr + ifAlignOrStroustrupBrackets multilineRecordExprAlignBrackets multilineRecordExpr fun ctx -> let size = getRecordSize ctx node.Fields @@ -3121,7 +3122,7 @@ let genType (t: Type) = genStruct +> genRecord - ifAlignBrackets genMultilineAnonRecordTypeAlignBrackets genMultilineAnonRecordType + ifAlignOrStroustrupBrackets genMultilineAnonRecordTypeAlignBrackets genMultilineAnonRecordType fun (ctx: Context) -> let size = getRecordSize ctx node.Fields @@ -3330,10 +3331,7 @@ let genTypeDefn (td: TypeDefn) = +> genSingleTextNode node.ClosingBrace let multilineExpression (ctx: Context) = - if - ctx.Config.MultilineBlockBracketsOnSameColumn - || (List.exists (fun (fieldNode: FieldNode) -> fieldNode.XmlDoc.IsSome) node.Fields) - then + let aligned = let msIsEmpty = List.isEmpty members (ifElseCtx @@ -3351,7 +3349,15 @@ let genTypeDefn (td: TypeDefn) = +> sepNlnTypeAndMembers typeDefnNode +> genMemberDefnList members) ctx - else + + let anyFieldHasXmlDoc = + List.exists (fun (fieldNode: FieldNode) -> fieldNode.XmlDoc.IsSome) node.Fields + + match ctx.Config.MultilineBracketStyle with + | Aligned + | ExperimentalStroustrup -> aligned + | Cramped when anyFieldHasXmlDoc -> aligned + | Cramped -> (sepNlnUnlessLastEventIsNewline +> opt (indent +> sepNln) node.Accessibility genSingleTextNode +> genSingleTextNodeSuffixDelimiter node.OpeningBrace @@ -3365,7 +3371,7 @@ let genTypeDefn (td: TypeDefn) = ctx let bodyExpr size ctx = - if (List.isEmpty members) then + if List.isEmpty members then (isSmallExpression size smallExpression multilineExpression) ctx else multilineExpression ctx diff --git a/src/Fantomas.Core/Context.fs b/src/Fantomas.Core/Context.fs index 9eca97796c..74d8485d9c 100644 --- a/src/Fantomas.Core/Context.fs +++ b/src/Fantomas.Core/Context.fs @@ -79,6 +79,7 @@ module WriterModel = let update maxPageWidth cmd m = let doNewline m = let m = { m with Indent = max m.Indent m.AtColumn } + let nextLine = String.replicate m.Indent " " let currentLine = String.Concat(List.head m.Lines, m.WriteBeforeNewline).TrimEnd() let otherLines = List.tail m.Lines @@ -540,11 +541,6 @@ let ifElse b (f1: Context -> Context) f2 (ctx: Context) = if b then f1 ctx else let ifElseCtx cond (f1: Context -> Context) f2 (ctx: Context) = if cond ctx then f1 ctx else f2 ctx -let ifStroustrupElse = ifElseCtx (fun ctx -> ctx.Config.ExperimentalStroustrupStyle) - -let ifStroustrup (f1: Context -> Context) = - ifElseCtx (fun ctx -> ctx.Config.ExperimentalStroustrupStyle) f1 id - /// apply f only when cond is true let onlyIf cond f ctx = if cond then f ctx else ctx @@ -824,6 +820,7 @@ let leadingExpressionLong threshold leadingExpression continuationExpression (ct /// The second binding b is not consider multiline. let leadingExpressionIsMultiline leadingExpression continuationExpression (ctx: Context) = let eventCountBeforeExpression = Queue.length ctx.WriterEvents + let contextAfterLeading = leadingExpression ctx let hasWriteLineEventsAfterExpression = @@ -1026,8 +1023,15 @@ let sepSemi (ctx: Context) = | true, true -> str " ; " <| ctx -let ifAlignBrackets f g = - ifElseCtx (fun ctx -> ctx.Config.MultilineBlockBracketsOnSameColumn) f g +let ifAlignOrStroustrupBrackets f g = + ifElseCtx + (fun ctx -> + match ctx.Config.MultilineBracketStyle with + | Aligned + | ExperimentalStroustrup -> true + | Cramped -> false) + f + g let sepNlnWhenWriteBeforeNewlineNotEmptyOr fallback (ctx: Context) = if hasWriteBeforeNewlineContent ctx then diff --git a/src/Fantomas.Core/FormatConfig.fs b/src/Fantomas.Core/FormatConfig.fs index fa3418a060..343fbe8521 100644 --- a/src/Fantomas.Core/FormatConfig.fs +++ b/src/Fantomas.Core/FormatConfig.fs @@ -25,6 +25,24 @@ type MultilineFormatterType = | "number_of_items" -> Some(box MultilineFormatterType.NumberOfItems) | _ -> None +type MultilineBracketStyle = + | Cramped + | Aligned + | ExperimentalStroustrup + + static member ToConfigString(cfg: MultilineBracketStyle) = + match cfg with + | Cramped -> "cramped" + | Aligned -> "aligned" + | ExperimentalStroustrup -> "experimental_stroustrup" + + static member OfConfigString(cfgString: string) = + match cfgString with + | "cramped" -> Some Cramped + | "aligned" -> Some Aligned + | "experimental_stroustrup" -> Some ExperimentalStroustrup + | _ -> None + [] type EndOfLineStyle = | LF @@ -164,10 +182,6 @@ type FormatConfig = [] MaxDotGetExpressionWidth: Num - [] - [] - MultilineBlockBracketsOnSameColumn: bool - [] [] NewlineBetweenTypeDefinitionAndMembers: bool @@ -198,9 +212,9 @@ type FormatConfig = BarBeforeDiscriminatedUnionDeclaration: bool [] - [] - [] - ExperimentalStroustrupStyle: bool + [] + [] + MultilineBracketStyle: MultilineBracketStyle [] [] @@ -211,6 +225,9 @@ type FormatConfig = [] StrictMode: bool } + member this.ExperimentalStroustrupStyle = + this.MultilineBracketStyle = ExperimentalStroustrup + static member Default = { IndentSize = 4 MaxLineLength = 120 @@ -238,7 +255,6 @@ type FormatConfig = MaxValueBindingWidth = 80 MaxFunctionBindingWidth = 40 MaxDotGetExpressionWidth = 80 - MultilineBlockBracketsOnSameColumn = false NewlineBetweenTypeDefinitionAndMembers = true AlignFunctionSignatureToIndentation = false AlternativeLongMemberDefinitions = false @@ -246,6 +262,6 @@ type FormatConfig = ExperimentalKeepIndentInBranch = false BlankLinesAroundNestedMultilineExpressions = true BarBeforeDiscriminatedUnionDeclaration = false - ExperimentalStroustrupStyle = false + MultilineBracketStyle = Cramped KeepMaxNumberOfBlankLines = 100 StrictMode = false } diff --git a/src/Fantomas.Tests/EditorConfigurationTests.fs b/src/Fantomas.Tests/EditorConfigurationTests.fs index fb931efec0..03439600cb 100644 --- a/src/Fantomas.Tests/EditorConfigurationTests.fs +++ b/src/Fantomas.Tests/EditorConfigurationTests.fs @@ -447,7 +447,7 @@ insert_final_newline = false Assert.IsFalse config.InsertFinalNewline [] -let ``Stroustrup style`` () = +let ``fsharp_experimental_stroustrup_style = true`` () = let rootDir = tempName () let editorConfig = @@ -464,5 +464,61 @@ fsharp_experimental_stroustrup_style = true let config = EditorConfig.readConfiguration fsharpFile.FSharpFile - Assert.IsTrue config.MultilineBlockBracketsOnSameColumn - Assert.IsTrue config.ExperimentalStroustrupStyle + Assert.AreEqual(ExperimentalStroustrup, config.MultilineBracketStyle) + +[] +let ``fsharp_multiline_bracket_style = experimental_stroustrup`` () = + let rootDir = tempName () + + let editorConfig = + """ +[*.fs] +fsharp_multiline_bracket_style = experimental_stroustrup +""" + + use configFixture = + new ConfigurationFile(defaultConfig, rootDir, content = editorConfig) + + use fsharpFile = new FSharpFile(rootDir) + + let config = EditorConfig.readConfiguration fsharpFile.FSharpFile + + Assert.AreEqual(ExperimentalStroustrup, config.MultilineBracketStyle) + +[] +let ``fsharp_multiline_bracket_style = aligned`` () = + let rootDir = tempName () + + let editorConfig = + """ +[*.fs] +fsharp_multiline_bracket_style = aligned +""" + + use configFixture = + new ConfigurationFile(defaultConfig, rootDir, content = editorConfig) + + use fsharpFile = new FSharpFile(rootDir) + + let config = EditorConfig.readConfiguration fsharpFile.FSharpFile + + Assert.AreEqual(Aligned, config.MultilineBracketStyle) + +[] +let ``fsharp_multiline_block_brackets_on_same_column = true`` () = + let rootDir = tempName () + + let editorConfig = + """ +[*.fs] +fsharp_multiline_block_brackets_on_same_column = true +""" + + use configFixture = + new ConfigurationFile(defaultConfig, rootDir, content = editorConfig) + + use fsharpFile = new FSharpFile(rootDir) + + let config = EditorConfig.readConfiguration fsharpFile.FSharpFile + + Assert.AreEqual(Aligned, config.MultilineBracketStyle) diff --git a/src/Fantomas/EditorConfig.fs b/src/Fantomas/EditorConfig.fs index 40b446c274..77be04694a 100644 --- a/src/Fantomas/EditorConfig.fs +++ b/src/Fantomas/EditorConfig.fs @@ -66,6 +66,8 @@ let private (|Number|_|) (d: string) = let private (|MultilineFormatterType|_|) mft = MultilineFormatterType.OfConfigString mft +let private (|BracketStyle|_|) bs = MultilineBracketStyle.OfConfigString bs + let private (|EndOfLineStyle|_|) eol = EndOfLineStyle.OfConfigString eol let private (|Boolean|_|) b = @@ -73,21 +75,48 @@ let private (|Boolean|_|) b = elif b = "false" then Some(box false) else None +let private (|OldStroustrup|OldAligned|Unspecified|) (input: IReadOnlyDictionary) = + let toOption = + function + | true, "true" -> Some true + | true, "false" -> Some false + | _ -> None + + let hasStroustrup = + input.TryGetValue("fsharp_experimental_stroustrup_style") |> toOption + + let hasAligned = + input.TryGetValue("fsharp_multiline_block_brackets_on_same_column") |> toOption + + match hasAligned, hasStroustrup with + | Some true, Some true -> OldStroustrup + | Some true, _ -> OldAligned + | _ -> Unspecified + let parseOptionsFromEditorConfig (fallbackConfig: FormatConfig) (editorConfigProperties: IReadOnlyDictionary) : FormatConfig = getFantomasFields fallbackConfig - |> Array.map (fun (ecn, dv) -> - match editorConfigProperties.TryGetValue(ecn) with + |> Array.map (fun (editorConfigName, defaultValue) -> + match editorConfigProperties.TryGetValue(editorConfigName) with | true, Number n -> n | true, Boolean b -> b | true, MultilineFormatterType mft -> mft | true, EndOfLineStyle eol -> box eol - | _ -> dv) + | true, BracketStyle bs -> box bs + | _ -> defaultValue) |> fun newValues -> + let formatConfigType = FormatConfig.Default.GetType() - Microsoft.FSharp.Reflection.FSharpValue.MakeRecord(formatConfigType, newValues) :?> FormatConfig + + let config = + Microsoft.FSharp.Reflection.FSharpValue.MakeRecord(formatConfigType, newValues) :?> FormatConfig + + match editorConfigProperties with + | Unspecified -> config + | OldStroustrup -> { config with MultilineBracketStyle = ExperimentalStroustrup } + | OldAligned -> { config with MultilineBracketStyle = Aligned } let configToEditorConfig (config: FormatConfig) : string = Reflection.getRecordFields config