From 42771ebe1e70c95e010a9da6be8f1a6f2da1c193 Mon Sep 17 00:00:00 2001 From: nojaf Date: Fri, 18 Dec 2020 11:12:24 +0100 Subject: [PATCH] Don't indent static member too far if record has access modifier. Fixes #1300. --- src/Fantomas.Tests/RecordTests.fs | 81 +++++++++++++++++++++++++++++++ src/Fantomas/CodePrinter.fs | 2 + 2 files changed, 83 insertions(+) diff --git a/src/Fantomas.Tests/RecordTests.fs b/src/Fantomas.Tests/RecordTests.fs index 83c757a4bb..69cb62a5b0 100644 --- a/src/Fantomas.Tests/RecordTests.fs +++ b/src/Fantomas.Tests/RecordTests.fs @@ -1344,3 +1344,84 @@ let internal sepSemi (ctx: Context) = | true, true -> str " ; " <| ctx """ + +[] +let ``record with an access modifier and a static member, 1300`` () = + formatSourceString + false + """ +type RequestParser<'ctx, 'a> = + internal + { consumedFields: Set + parse: 'ctx -> Request -> Async> + prohibited: ProhibitedRequestGetter list } + + static member internal Create + ( + consumedFields, parse: 'ctx -> Request -> Async> + ) : RequestParser<'ctx, 'a> = + { consumedFields = consumedFields + parse = parse + prohibited = [] } + +""" + config + |> prepend newline + |> should + equal + """ +type RequestParser<'ctx, 'a> = + internal + { consumedFields: Set + parse: 'ctx -> Request -> Async> + prohibited: ProhibitedRequestGetter list } + + static member internal Create(consumedFields, parse: 'ctx -> Request -> Async>) + : RequestParser<'ctx, 'a> = + { consumedFields = consumedFields + parse = parse + prohibited = [] } +""" + +[] +let ``record with an access modifier and a static member, MultilineBlockBracketsOnSameColumn`` () = + formatSourceString + false + """ +type RequestParser<'ctx, 'a> = + internal + { consumedFields: Set + parse: 'ctx -> Request -> Async> + prohibited: ProhibitedRequestGetter list } + + static member internal Create + ( + consumedFields, parse: 'ctx -> Request -> Async> + ) : RequestParser<'ctx, 'a> = + { consumedFields = consumedFields + parse = parse + prohibited = [] } + +""" + { config with + MultilineBlockBracketsOnSameColumn = true } + |> prepend newline + |> should + equal + """ +type RequestParser<'ctx, 'a> = + internal + { + consumedFields: Set + parse: 'ctx -> Request -> Async> + prohibited: ProhibitedRequestGetter list + } + + static member internal Create(consumedFields, parse: 'ctx -> Request -> Async>) + : RequestParser<'ctx, 'a> = + { + consumedFields = consumedFields + parse = parse + prohibited = [] + } +""" diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index ead7461bf8..fd48ce0bfc 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -3548,6 +3548,7 @@ and genMultilineSimpleRecordTypeDefn tdr ms ao' fs astContext = ) +> sepCloseS +> leaveNodeTokenByName tdr.Range RBRACE + +> optSingle (fun _ -> unindent) ao' +> onlyIf (List.isNotEmpty ms) sepNln +> sepNlnBetweenTypeAndMembers ms +> genMemberDefnList @@ -3570,6 +3571,7 @@ and genMultilineSimpleRecordTypeDefnAlignBrackets tdr ms ao' fs astContext = +> unindent +> sepNln +> sepCloseSFixed + +> optSingle (fun _ -> unindent) ao' +> onlyIf (List.isNotEmpty ms) sepNln +> sepNlnBetweenTypeAndMembers ms +> genMemberDefnList