Fix paren-multiline-expression in do block

Lennart Spitzner 2023-05-19 19:55:01 +02:00
parent 354c86ef42
commit 22a658e794
4 changed files with 32 additions and 13 deletions

View File

@ -1008,3 +1008,10 @@ dofunc = do
-- abc -- abc
more more
code code
#test do-block paren non-alignment
catchFunc = do
(func aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
)
`catch` catcher

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])