Compare commits

...

4 Commits

7 changed files with 226 additions and 183 deletions

View File

@ -998,3 +998,20 @@ func = do
func False = 0 func False = 0
-- comment -- comment
func True = 1 func True = 1
#test nested do-block-with-comment issue
dofunc = do
do
some
code
do
-- abc
more
code
#test do-block paren non-alignment
catchFunc = do
(func aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
)
`catch` catcher

View File

@ -193,143 +193,143 @@ remSuperfluousParens outerFixity = \case
hardcodedFixity :: Bool -> String -> Maybe Fixity hardcodedFixity :: Bool -> String -> Maybe Fixity
hardcodedFixity allowUnqualify = \case hardcodedFixity allowUnqualify = \case
"." -> Just $ Fixity NoSourceText 9 InfixR "." -> Just $ Fixity NoSourceText 9 InfixR
"!!" -> Just $ Fixity NoSourceText 9 InfixL "!!" -> Just $ Fixity NoSourceText 9 InfixL
"**" -> Just $ Fixity NoSourceText 8 InfixR "**" -> Just $ Fixity NoSourceText 8 InfixR
"^" -> Just $ Fixity NoSourceText 8 InfixR "^" -> Just $ Fixity NoSourceText 8 InfixR
"^^" -> Just $ Fixity NoSourceText 8 InfixR "^^" -> Just $ Fixity NoSourceText 8 InfixR
"*" -> Just $ Fixity NoSourceText 7 InfixL "*" -> Just $ Fixity NoSourceText 7 InfixL
"/" -> Just $ Fixity NoSourceText 7 InfixL "/" -> Just $ Fixity NoSourceText 7 InfixL
"`quot`" -> Just $ Fixity NoSourceText 7 InfixL "`quot`" -> Just $ Fixity NoSourceText 7 InfixL
"`rem`" -> Just $ Fixity NoSourceText 7 InfixL "`rem`" -> Just $ Fixity NoSourceText 7 InfixL
"`div`" -> Just $ Fixity NoSourceText 7 InfixL "`div`" -> Just $ Fixity NoSourceText 7 InfixL
"`mod`" -> Just $ Fixity NoSourceText 7 InfixL "`mod`" -> Just $ Fixity NoSourceText 7 InfixL
"+" -> Just $ Fixity NoSourceText 6 InfixL "+" -> Just $ Fixity NoSourceText 6 InfixL
"-" -> Just $ Fixity NoSourceText 6 InfixL "-" -> Just $ Fixity NoSourceText 6 InfixL
":" -> Just $ Fixity NoSourceText 5 InfixR ":" -> Just $ Fixity NoSourceText 5 InfixR
"==" -> Just $ Fixity NoSourceText 4 InfixN "==" -> Just $ Fixity NoSourceText 4 InfixN
"/=" -> Just $ Fixity NoSourceText 4 InfixN "/=" -> Just $ Fixity NoSourceText 4 InfixN
"<" -> Just $ Fixity NoSourceText 4 InfixN "<" -> Just $ Fixity NoSourceText 4 InfixN
"<=" -> Just $ Fixity NoSourceText 4 InfixN "<=" -> Just $ Fixity NoSourceText 4 InfixN
">" -> Just $ Fixity NoSourceText 4 InfixN ">" -> Just $ Fixity NoSourceText 4 InfixN
">=" -> Just $ Fixity NoSourceText 4 InfixN ">=" -> Just $ Fixity NoSourceText 4 InfixN
"&&" -> Just $ Fixity NoSourceText 3 InfixR "&&" -> Just $ Fixity NoSourceText 3 InfixR
"||" -> Just $ Fixity NoSourceText 2 InfixR "||" -> Just $ Fixity NoSourceText 2 InfixR
">>=" -> Just $ Fixity NoSourceText 1 InfixL ">>=" -> Just $ Fixity NoSourceText 1 InfixL
">>" -> Just $ Fixity NoSourceText 1 InfixL ">>" -> Just $ Fixity NoSourceText 1 InfixL
"=<<" -> Just $ Fixity NoSourceText 1 InfixR "=<<" -> Just $ Fixity NoSourceText 1 InfixR
"$" -> Just $ Fixity NoSourceText 0 InfixR "$" -> Just $ Fixity NoSourceText 0 InfixR
"`seq`" -> Just $ Fixity NoSourceText 0 InfixR "`seq`" -> Just $ Fixity NoSourceText 0 InfixR
"$!" -> Just $ Fixity NoSourceText 0 InfixR "$!" -> Just $ Fixity NoSourceText 0 InfixR
"!" -> Just $ Fixity NoSourceText 9 InfixL "!" -> Just $ Fixity NoSourceText 9 InfixL
"//" -> Just $ Fixity NoSourceText 9 InfixL "//" -> Just $ Fixity NoSourceText 9 InfixL
"<>" -> Just $ Fixity NoSourceText 6 InfixR "<>" -> Just $ Fixity NoSourceText 6 InfixR
"<+>" -> Just $ Fixity NoSourceText 5 InfixR "<+>" -> Just $ Fixity NoSourceText 5 InfixR
"<$" -> Just $ Fixity NoSourceText 4 InfixL "<$" -> Just $ Fixity NoSourceText 4 InfixL
"$>" -> Just $ Fixity NoSourceText 4 InfixL "$>" -> Just $ Fixity NoSourceText 4 InfixL
"<$>" -> Just $ Fixity NoSourceText 4 InfixL "<$>" -> Just $ Fixity NoSourceText 4 InfixL
"<&>" -> Just $ Fixity NoSourceText 1 InfixL "<&>" -> Just $ Fixity NoSourceText 1 InfixL
"&" -> Just $ Fixity NoSourceText 1 InfixL "&" -> Just $ Fixity NoSourceText 1 InfixL
"<*>" -> Just $ Fixity NoSourceText 4 InfixL "<*>" -> Just $ Fixity NoSourceText 4 InfixL
"<**>" -> Just $ Fixity NoSourceText 4 InfixL "<**>" -> Just $ Fixity NoSourceText 4 InfixL
"*>" -> Just $ Fixity NoSourceText 4 InfixL "*>" -> Just $ Fixity NoSourceText 4 InfixL
"<*" -> Just $ Fixity NoSourceText 4 InfixL "<*" -> Just $ Fixity NoSourceText 4 InfixL
"`elem`" -> Just $ Fixity NoSourceText 4 InfixN "`elem`" -> Just $ Fixity NoSourceText 4 InfixN
"`notElem`" -> Just $ Fixity NoSourceText 4 InfixN "`notElem`" -> Just $ Fixity NoSourceText 4 InfixN
"++" -> Just $ Fixity NoSourceText 5 InfixR "++" -> Just $ Fixity NoSourceText 5 InfixR
"%" -> Just $ Fixity NoSourceText 7 InfixL "%" -> Just $ Fixity NoSourceText 7 InfixL
"<|>" -> Just $ Fixity NoSourceText 3 InfixL "<|>" -> Just $ Fixity NoSourceText 3 InfixL
".&." -> Just $ Fixity NoSourceText 7 InfixL ".&." -> Just $ Fixity NoSourceText 7 InfixL
".|." -> Just $ Fixity NoSourceText 5 InfixL ".|." -> Just $ Fixity NoSourceText 5 InfixL
"`xor`" -> Just $ Fixity NoSourceText 6 InfixL "`xor`" -> Just $ Fixity NoSourceText 6 InfixL
"`shift`" -> Just $ Fixity NoSourceText 8 InfixL "`shift`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotate`" -> Just $ Fixity NoSourceText 8 InfixL "`rotate`" -> Just $ Fixity NoSourceText 8 InfixL
"`shiftL`" -> Just $ Fixity NoSourceText 8 InfixL "`shiftL`" -> Just $ Fixity NoSourceText 8 InfixL
"`shiftR`" -> Just $ Fixity NoSourceText 8 InfixL "`shiftR`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotateL`" -> Just $ Fixity NoSourceText 8 InfixL "`rotateL`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotateR`" -> Just $ Fixity NoSourceText 8 InfixL "`rotateR`" -> Just $ Fixity NoSourceText 8 InfixL
"+#" -> Just $ Fixity NoSourceText 6 InfixL "+#" -> Just $ Fixity NoSourceText 6 InfixL
".^." -> Just $ Fixity NoSourceText 6 InfixL ".^." -> Just $ Fixity NoSourceText 6 InfixL
".>>." -> Just $ Fixity NoSourceText 8 InfixL ".>>." -> Just $ Fixity NoSourceText 8 InfixL
".<<." -> Just $ Fixity NoSourceText 8 InfixL ".<<." -> Just $ Fixity NoSourceText 8 InfixL
"!>>." -> Just $ Fixity NoSourceText 8 InfixL "!>>." -> Just $ Fixity NoSourceText 8 InfixL
"!<<." -> Just $ Fixity NoSourceText 8 InfixL "!<<." -> Just $ Fixity NoSourceText 8 InfixL
">=>" -> Just $ Fixity NoSourceText 1 InfixR ">=>" -> Just $ Fixity NoSourceText 1 InfixR
"<=<" -> Just $ Fixity NoSourceText 1 InfixR "<=<" -> Just $ Fixity NoSourceText 1 InfixR
"&&&" -> Just $ Fixity NoSourceText 3 InfixR "&&&" -> Just $ Fixity NoSourceText 3 InfixR
"<$!>" -> fixity InfixL 4 "<$!>" -> fixity InfixL 4
"~" -> fixity InfixN 4 "~" -> fixity InfixN 4
"~~" -> fixity InfixN 4 "~~" -> fixity InfixN 4
":~:" -> Just $ Fixity NoSourceText 4 InfixN ":~:" -> Just $ Fixity NoSourceText 4 InfixN
":~~:" -> Just $ Fixity NoSourceText 4 InfixN ":~~:" -> Just $ Fixity NoSourceText 4 InfixN
":+:" -> fixity InfixR 5 ":+:" -> fixity InfixR 5
":*:" -> fixity InfixR 6 ":*:" -> fixity InfixR 6
":.:" -> fixity InfixR 7 ":.:" -> fixity InfixR 7
":|" -> fixity InfixR 5 ":|" -> fixity InfixR 5
-- non-base from random sources. -- non-base from random sources.
"<|" -> Just $ Fixity NoSourceText 5 InfixR "<|" -> Just $ Fixity NoSourceText 5 InfixR
"|>" -> Just $ Fixity NoSourceText 5 InfixL "|>" -> Just $ Fixity NoSourceText 5 InfixL
"><" -> Just $ Fixity NoSourceText 5 InfixR "><" -> Just $ Fixity NoSourceText 5 InfixR
"$+$" -> Just $ Fixity NoSourceText 5 InfixL "$+$" -> Just $ Fixity NoSourceText 5 InfixL
"\\\\" -> Just $ Fixity NoSourceText 5 InfixN "\\\\" -> Just $ Fixity NoSourceText 5 InfixN
".>" -> Just $ Fixity NoSourceText 9 InfixL ".>" -> Just $ Fixity NoSourceText 9 InfixL
":?" -> Just $ Fixity NoSourceText 7 InfixN ":?" -> Just $ Fixity NoSourceText 7 InfixN
":-" -> Just $ Fixity NoSourceText 9 InfixR ":-" -> Just $ Fixity NoSourceText 9 InfixR
".:" -> Just $ Fixity NoSourceText 9 InfixR ".:" -> Just $ Fixity NoSourceText 9 InfixR
"$!!" -> fixity InfixR 0 "$!!" -> fixity InfixR 0
"<$!!>" -> fixity InfixL 4 "<$!!>" -> fixity InfixL 4
-- lens, not complete! -- lens, not complete!
"<|" -> fixity InfixR 5 "<|" -> fixity InfixR 5
"|>" -> fixity InfixL 5 "|>" -> fixity InfixL 5
"%~" -> fixity InfixR 4 "%~" -> fixity InfixR 4
".~" -> fixity InfixR 4 ".~" -> fixity InfixR 4
"?~" -> fixity InfixR 4 "?~" -> fixity InfixR 4
"<.~" -> fixity InfixR 4 "<.~" -> fixity InfixR 4
"<?~" -> fixity InfixR 4 "<?~" -> fixity InfixR 4
"+~" -> fixity InfixR 4 "+~" -> fixity InfixR 4
"*~" -> fixity InfixR 4 "*~" -> fixity InfixR 4
"-~" -> fixity InfixR 4 "-~" -> fixity InfixR 4
"//~" -> fixity InfixR 4 "//~" -> fixity InfixR 4
"^~" -> fixity InfixR 4 "^~" -> fixity InfixR 4
"^^~" -> fixity InfixR 4 "^^~" -> fixity InfixR 4
"**~" -> fixity InfixR 4 "**~" -> fixity InfixR 4
"||~" -> fixity InfixR 4 "||~" -> fixity InfixR 4
"&&~" -> fixity InfixR 4 "&&~" -> fixity InfixR 4
".=" -> fixity InfixN 4 ".=" -> fixity InfixN 4
"%=" -> fixity InfixN 4 "%=" -> fixity InfixN 4
"?=" -> fixity InfixN 4 "?=" -> fixity InfixN 4
"+=" -> fixity InfixN 4 "+=" -> fixity InfixN 4
"-=" -> fixity InfixN 4 "-=" -> fixity InfixN 4
"*=" -> fixity InfixN 4 "*=" -> fixity InfixN 4
"//=" -> fixity InfixN 4 "//=" -> fixity InfixN 4
"^=" -> fixity InfixN 4 "^=" -> fixity InfixN 4
"^^=" -> fixity InfixN 4 "^^=" -> fixity InfixN 4
"**=" -> fixity InfixN 4 "**=" -> fixity InfixN 4
"&&=" -> fixity InfixN 4 "&&=" -> fixity InfixN 4
"||=" -> fixity InfixN 4 "||=" -> fixity InfixN 4
"<~" -> fixity InfixR 2 "<~" -> fixity InfixR 2
"<.=" -> fixity InfixN 4 "<.=" -> fixity InfixN 4
"<?=" -> fixity InfixN 4 "<?=" -> fixity InfixN 4
"<>~" -> fixity InfixR 4 "<>~" -> fixity InfixR 4
"<>=" -> fixity InfixN 4 "<>=" -> fixity InfixN 4
"^.." -> fixity InfixL 8 "^.." -> fixity InfixL 8
"^?" -> fixity InfixL 8 "^?" -> fixity InfixL 8
"^?!" -> fixity InfixL 8 "^?!" -> fixity InfixL 8
"^@.." -> fixity InfixL 8 "^@.." -> fixity InfixL 8
"^@?" -> fixity InfixL 8 "^@?" -> fixity InfixL 8
"^@?!" -> fixity InfixL 8 "^@?!" -> fixity InfixL 8
"^." -> fixity InfixL 8 "^." -> fixity InfixL 8
"^@." -> fixity InfixL 8 "^@." -> fixity InfixL 8
"<." -> fixity InfixR 9 "<." -> fixity InfixR 9
".>" -> fixity InfixR 9 ".>" -> fixity InfixR 9
"<.>" -> fixity InfixR 9 "<.>" -> fixity InfixR 9
"@@~" -> fixity InfixR 4 "@@~" -> fixity InfixR 4
"@@=" -> fixity InfixR 4 "@@=" -> fixity InfixR 4
"&~" -> fixity InfixL 1 "&~" -> fixity InfixL 1
"??" -> fixity InfixL 1 "??" -> fixity InfixL 1
-- certain other operators -- certain other operators
@ -343,50 +343,62 @@ hardcodedFixity allowUnqualify = \case
-- ".*?" -> fixity _ _ -- ".*?" -> fixity _ _
-- ".+." -> fixity _ _ -- ".+." -> fixity _ _
-- ".-." -> fixity _ _ -- ".-." -> fixity _ _
".&." -> fixity InfixR 1 ".&." -> fixity InfixR 1
".&&." -> fixity InfixR 1 ".&&." -> fixity InfixR 1
".||." -> fixity InfixR 1 ".||." -> fixity InfixR 1
"==>" -> fixity InfixR 0 "==>" -> fixity InfixR 0
"=/=" -> fixity InfixN 4 "=/=" -> fixity InfixN 4
"===" -> fixity InfixN 4 "===" -> fixity InfixN 4
".:!" -> fixity InfixL 9 ".:!" -> fixity InfixL 9
".:?" -> fixity InfixL 9 ".:?" -> fixity InfixL 9
-- ".:>" -> fixity _ _ -- ".:>" -> fixity _ _
-- ".:>?" -> fixity _ _ -- ".:>?" -> fixity _ _
"<.>" -> fixity InfixR 7 "<.>" -> fixity InfixR 7
"</>" -> fixity InfixR 5 "</>" -> fixity InfixR 5
"<?>" -> fixity InfixL 9 "<?>" -> fixity InfixL 9
-- "~" -> fixity _ _ -- "~" -> fixity _ _
"===" -> fixity InfixN 4 "===" -> fixity InfixN 4
"!?" -> fixity InfixL 9 "!?" -> fixity InfixL 9
"%==" -> fixity InfixN 3 "%==" -> fixity InfixN 3
".*" -> fixity InfixR 8 ".*" -> fixity InfixR 8
".**" -> fixity InfixR 8 ".**" -> fixity InfixR 8
".***" -> fixity InfixR 8 ".***" -> fixity InfixR 8
":?-" -> fixity InfixN 1 ":?-" -> fixity InfixN 1
"::-" -> fixity InfixN 0 "::-" -> fixity InfixN 0
"&!" -> fixity InfixL 1 "&!" -> fixity InfixL 1
-- quickcheck (-state-machine) -- quickcheck (-state-machine)
":&&" -> fixity InfixL 9 ":&&" -> fixity InfixL 9
":||" -> fixity InfixL 9 ":||" -> fixity InfixL 9
":&&:" -> fixity InfixL 9 ":&&:" -> fixity InfixL 9
":=>" -> fixity InfixL 9 ":=>" -> fixity InfixL 9
":==" -> fixity InfixL 9 ":==" -> fixity InfixL 9
":/=" -> fixity InfixL 9 ":/=" -> fixity InfixL 9
":<" -> fixity InfixL 9 ":<" -> fixity InfixL 9
":<=" -> fixity InfixL 9 ":<=" -> fixity InfixL 9
":>" -> fixity InfixL 9 ":>" -> fixity InfixL 9
":>=" -> fixity InfixL 9 ":>=" -> fixity InfixL 9
":->" -> fixity InfixL 9 ":->" -> fixity InfixL 9
".==" -> fixity InfixN 5
"./" -> fixity InfixN 5
".<" -> fixity InfixN 5
".<=" -> fixity InfixN 5
".>" -> fixity InfixN 5
".>=" -> fixity InfixN 5
"`member`" -> fixity InfixN 8
"`notMember`" -> fixity InfixN 8
".//" -> fixity InfixL 4
".&&" -> fixity InfixR 3
".||" -> fixity InfixR 2
".=>" -> fixity InfixR 1
-- servant -- servant
":>" -> fixity InfixR 4 ":>" -> fixity InfixR 4
":<|>" -> fixity InfixR 3 ":<|>" -> fixity InfixR 3
":-" -> fixity InfixL 0 ":-" -> fixity InfixL 0
-- postgresql-simple -- postgresql-simple
":." -> fixity InfixR 3 -- this has wildly different fixities in different libraries ":." -> fixity InfixR 3 -- this has wildly different fixities in different libraries
-- ? -- ?
-- ":-:" -> fixity _ _ -- ":-:" -> fixity _ _
@ -399,7 +411,7 @@ hardcodedFixity allowUnqualify = \case
-- ":>:" -> fixity _ _ -- ":>:" -> fixity _ _
-- ":>=:" -> fixity _ _ -- ":>=:" -> fixity _ _
str -> case (Safe.headMay str, Safe.lastMay str) of str -> case (Safe.headMay str, Safe.lastMay str) of
(Just '\'', _) -> hardcodedFixity False (drop 1 str) (Just '\'', _) -> hardcodedFixity False (drop 1 str)
(Just '`', Just '`') -> Just $ Fixity NoSourceText 9 InfixL (Just '`', Just '`') -> Just $ Fixity NoSourceText 9 InfixL
(Just c, _) | Data.Char.isAlpha c && allowUnqualify -> hardcodedFixity False (Just c, _) | Data.Char.isAlpha c && allowUnqualify -> hardcodedFixity False

View File

@ -103,7 +103,7 @@ splitModuleDecls lmod = do
lastSpan <- do lastSpan <- do
finalYield $ MEExactModuleHead moduleWithoutComments finalYield $ MEExactModuleHead moduleWithoutComments
pure pure
$ maybe (1, 1) (ExactPrint.ss2posEnd) $ maybe (0, 1) (ExactPrint.ss2posEnd)
$ maximumMay $ maximumMay
$ [ GHC.anchor a $ [ GHC.anchor a
| L a _ <- GHC.priorComments $ case hsModAnn' of | L a _ <- GHC.priorComments $ case hsModAnn' of

View File

@ -245,16 +245,28 @@ layoutOpTree allowSinglelinePar = \case
wrapParenMlIf x innerHead innerLines = if x wrapParenMlIf x innerHead innerLines = if x
then wrapParenMl innerHead innerLines then wrapParenMl innerHead innerLines
else docPar innerHead (docLines innerLines) else docPar innerHead (docLines innerLines)
wrapParenMl innerHead innerLines = docSetBaseY $ docLines wrapParenMl innerHead innerLines = docAlt
( [ docCols [ docForceZeroAdd $ docSetBaseY $ docLines
ColOpPrefix ( [ docCols
[ (if zeroOps then id else appSep) $ docLit $ Text.pack "(" ColOpPrefix
, docHandleComms locO $ innerHead [ (if zeroOps then id else appSep) $ docLit $ Text.pack "("
] , docHandleComms locO $ innerHead
] ]
++ innerLines ]
++ [docHandleComms locC $ docLit $ Text.pack ")"] ++ innerLines
) ++ [docHandleComms locC $ docLit $ Text.pack ")"]
)
, docPar
(docCols
ColOpPrefix
[ (if zeroOps then id else appSep) $ docLit $ Text.pack "("
, docHandleComms locO $ innerHead
]
)
( docLines
$ innerLines ++ [docHandleComms locC $ docLit $ Text.pack ")"]
)
]
configAllowsParInsert <- askLayoutConf _lconfig_fixityBasedAddAlignParens configAllowsParInsert <- askLayoutConf _lconfig_fixityBasedAddAlignParens
let allowParIns = configAllowsParInsert && case fixity of let allowParIns = configAllowsParInsert && case fixity of

View File

@ -205,7 +205,7 @@ transformAlts =
let ind = _acp_indent acp + _acp_indentPrep acp + indAdd let ind = _acp_indent acp + _acp_indentPrep acp + indAdd
mSet $ acp mSet $ acp
{ _acp_indent = ind, _acp_indentPrep = 0 { _acp_indent = ind, _acp_indentPrep = 0
, _acp_indentPrepForced = False , _acp_indentPrepForced = parentForced
} }
sameLine' <- go sameLine sameLine' <- go sameLine
mModify $ \acp' -> acp' mModify $ \acp' -> acp'

View File

@ -91,8 +91,8 @@ transformSimplifyColumns = Uniplate.rewrite $ \case
] ]
BDPar ind col1@(BDCols sig1 _) col2@(BDCols sig2 _) | sig1 == sig2 -> BDPar ind col1@(BDCols sig1 _) col2@(BDCols sig2 _) | sig1 == sig2 ->
Just $ BDAddBaseY ind (BDLines [col1, col2]) Just $ BDAddBaseY ind (BDLines [col1, col2])
BDPar ind col1@(BDCols sig1 _) (BDLines (col2@(BDCols sig2 _) : rest)) -- BDPar ind col1@(BDCols sig1 _) (BDLines (col2@(BDCols sig2 _) : rest))
| sig1 == sig2 -> Just $ BDPar ind (BDLines [col1, col2]) (BDLines rest) -- | sig1 == sig2 -> Just $ BDPar ind (BDLines [col1, col2]) (BDLines rest)
BDPar ind (BDLines lines1) col2@(BDCols sig2 _) BDPar ind (BDLines lines1) col2@(BDCols sig2 _)
| BDCols sig1 _ <- List.last lines1, sig1 == sig2 -> Just | BDCols sig1 _ <- List.last lines1, sig1 == sig2 -> Just
$ BDAddBaseY ind (BDLines $ lines1 ++ [col2]) $ BDAddBaseY ind (BDLines $ lines1 ++ [col2])

View File

@ -44,6 +44,8 @@ transformSimplifyIndent = Uniplate.rewrite $ \case
Just $ BDFlushCommentsPrior c (BDAddBaseY i x) Just $ BDFlushCommentsPrior c (BDAddBaseY i x)
BDAddBaseY i (BDFlushCommentsPost c sm x) -> BDAddBaseY i (BDFlushCommentsPost c sm x) ->
Just $ BDFlushCommentsPost c sm (BDAddBaseY i x) Just $ BDFlushCommentsPost c sm (BDAddBaseY i x)
BDAddBaseY i (BDQueueComments comms x) ->
Just $ BDQueueComments comms (BDAddBaseY i x)
BDAddBaseY i (BDSeq l) -> BDAddBaseY i (BDSeq l) ->
Just $ BDSeq $ List.init l ++ [BDAddBaseY i $ List.last l] Just $ BDSeq $ List.init l ++ [BDAddBaseY i $ List.last l]
BDAddBaseY i (BDCols sig l) -> BDAddBaseY i (BDCols sig l) ->