Do not retain newlines when refactoring list into single line
parent
48522b596c
commit
10dc48b74d
|
@ -0,0 +1,23 @@
|
|||
#group expression/list
|
||||
|
||||
#golden list format into singleline should not keep spacing
|
||||
foo =
|
||||
[ 1
|
||||
, 2
|
||||
, 3
|
||||
, 4
|
||||
, 5
|
||||
]
|
||||
#expected
|
||||
foo = [1, 2, 3, 4, 5]
|
||||
|
||||
#golden singleline list with comment
|
||||
foo = [1 {- a -}, {- b -} 2, {- c -} 3, 4, 5]
|
||||
#expected
|
||||
foo =
|
||||
[ 1 {- a -}
|
||||
, {- b -} 2
|
||||
, {- c -} 3
|
||||
, 4
|
||||
, 5
|
||||
]
|
|
@ -795,7 +795,8 @@ docHandleListElemComms layouter e = case obtainListElemStartCommaLocs e of
|
|||
docHandleListElemCommsProperPost
|
||||
:: (LocatedA ast -> ToBriDocM BriDocNumbered)
|
||||
-> [LocatedA ast]
|
||||
-> ToBriDocM [(Maybe GHC.RealSrcLoc, ToBriDocM BriDocNumbered)]
|
||||
-> ToBriDocM
|
||||
[(Maybe GHC.RealSrcLoc, LocatedA ast, ToBriDocM BriDocNumbered)]
|
||||
docHandleListElemCommsProperPost layouter es = case es of
|
||||
[] -> pure []
|
||||
(e1 : rest) -> case obtainListElemStartCommaLocs e1 of
|
||||
|
@ -803,7 +804,8 @@ docHandleListElemCommsProperPost layouter es = case es of
|
|||
res <- go posComma rest
|
||||
pure
|
||||
$ ( Nothing
|
||||
, docFlushCommsPost True e1 $ docHandleComms posStart $ layouter e1
|
||||
, e1
|
||||
, docHandleComms posStart $ layouter e1
|
||||
)
|
||||
: res
|
||||
where
|
||||
|
@ -813,7 +815,8 @@ docHandleListElemCommsProperPost layouter es = case es of
|
|||
res <- go posComma rest
|
||||
pure
|
||||
$ ( intoComma
|
||||
, docFlushCommsPost True e1 $ docHandleComms posStart $ layouter e1
|
||||
, e1
|
||||
, docHandleComms posStart $ layouter e1
|
||||
)
|
||||
: res
|
||||
|
||||
|
|
|
@ -699,17 +699,23 @@ layoutExpr lexpr@(L _ expr) = do
|
|||
let hasComments = hasAnyCommentsBelow lexpr
|
||||
case splitFirstLast elemDocs of
|
||||
FirstLastEmpty -> docSeq [docLit $ Text.pack "[", closeDoc]
|
||||
FirstLastSingleton (_, e) -> docAlt
|
||||
FirstLastSingleton (_, ast, e) -> docAlt
|
||||
[ docSeq [openDoc, docForceSingleline e, closeDoc]
|
||||
, docSetBaseY $ docLines
|
||||
[docSeq [openDoc, docSeparator, docSetBaseY $ e], closeDoc]
|
||||
[ docSeq
|
||||
[ openDoc
|
||||
, docSeparator
|
||||
, docSetBaseY $ docFlushCommsPost True ast e
|
||||
]
|
||||
, closeDoc
|
||||
]
|
||||
]
|
||||
FirstLast (_, e1) ems (finalCommaPos, eN) -> runFilteredAlternative $ do
|
||||
FirstLast (_, _, e1) ems (finalCommaPos, _, eN) -> runFilteredAlternative $ do
|
||||
addAlternativeCond (not hasComments)
|
||||
$ docSeq
|
||||
$ [openDoc, docForceSingleline e1]
|
||||
++ [ x
|
||||
| (commaPos, e) <- ems
|
||||
| (commaPos, _, e) <- ems
|
||||
, x <- [docHandleComms commaPos docCommaSep, docForceSingleline e]
|
||||
]
|
||||
++ [ docHandleComms finalCommaPos docCommaSep
|
||||
|
@ -717,8 +723,12 @@ layoutExpr lexpr@(L _ expr) = do
|
|||
, closeDoc]
|
||||
addAlternative
|
||||
$ let start = docCols ColList [appSep $ openDoc, e1]
|
||||
linesM = ems <&> \(p, d) ->
|
||||
docCols ColList [docHandleComms p docCommaSep, d]
|
||||
linesM = ems <&> \(p, ast, d) ->
|
||||
docCols
|
||||
ColList
|
||||
[ docHandleComms p docCommaSep
|
||||
, docFlushCommsPost True ast $ d
|
||||
]
|
||||
lineN = docCols ColList
|
||||
[docHandleComms finalCommaPos $ docCommaSep, eN]
|
||||
in docSetBaseY
|
||||
|
|
Loading…
Reference in New Issue