Compare commits

..

3 Commits

4 changed files with 77 additions and 33 deletions

View File

@ -1015,3 +1015,39 @@ catchFunc = do
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
) )
`catch` catcher `catch` catcher
#test comment after lambdacase
func = \case
-- zzz
False -> 0
True -> 1
#test comment for recordfield
func = myRecord { field = -- comment
if some condition then option one else option two
, otherfield = "text"
}
#test multiline guards within parenthesis
duGswidunBlxaq drux = DeeX.Vufcqqafi
(tiErihambSunxo drux)
(if
| geIqzscmBhiwo drux
-> Bmuh "Hpiioqa a yabufx ynyuq"
| liWaov drux
-> Bmuh "Ookhup ubqocf merr ukm ynyuq iitiop"
| tiErihambSunxo drux && bdp (alJukIkuh drux)
-> Bmuh "Jpgic dfaz dieb fs wreup hsv of ynyuq dio njr subdet"
| ukFinwuicUgIcclcep drux
-> Bmuh "Egwiqae-ka-molenqe codns dif'y ns csjyhth sisoyy"
| otherwise
-> Likiotq
)
#test multiline-block-comment in do-block
func = do
abc
{- some long
block comment -}
x <- readLine
print x

View File

@ -641,29 +641,36 @@ layoutPatternBindFinal alignmentToken binderDoc mPatDoc clauses (wrapBinds, mWhe
$ docLines $ docLines
$ map docSetBaseY $ map docSetBaseY
$ clauseDocs $ clauseDocs
>>= \(grhsEpAnn, guardDocs, bodyDoc) -> -- TODO92 >>= \(grhsEpAnn, guardDocs, bodyDoc) -> case guardDocs of
(case guardDocs of [] ->
[] -> [docHandleComms grhsEpAnn docEmpty] [ docHandleComms grhsEpAnn
[g] -> $ docCols
[ docHandleComms grhsEpAnn ColOpPrefix
$ docSeq [appSep [ appSep $ return binderDoc
$ docLit $ Text.pack "|", return g] , docAddBaseY BrIndentRegular $ return bodyDoc
] ]
(g1 : gr) -> ]
( ( docHandleComms grhsEpAnn [g] ->
$ docSeq [appSep $ docLit $ Text.pack "|", return g1] [ docHandleComms grhsEpAnn
) $ docSeq [appSep $ docLit $ Text.pack "|", return g]
: (gr <&> \g -> , docSeq
docSeq [appSep $ docLit $ Text.pack ",", return g] [ appSep $ return binderDoc
) , docAddBaseY BrIndentRegular $ return bodyDoc
) ]
) ]
++ [ docCols (g1 : gr) ->
ColOpPrefix ( [ docHandleComms grhsEpAnn
[ appSep $ return binderDoc $ docSeq [appSep $ docLit $ Text.pack "|", return g1]
, docAddBaseY BrIndentRegular $ return bodyDoc ]
] ++ (gr <&> \g ->
] docSeq [appSep $ docLit $ Text.pack ",", return g]
)
++ [ docSeq
[ appSep $ return binderDoc
, docAddBaseY BrIndentRegular $ return bodyDoc
]
]
)
] ]
++ wherePartMultiLine ++ wherePartMultiLine

View File

@ -109,15 +109,13 @@ transformSimplifyColumns = Uniplate.rewrite $ \case
-> Just -> Just
$ BDLines [BDCols sig1 (List.init cols ++ [line]), BDCols sig2 cols2] $ BDLines [BDCols sig1 (List.init cols ++ [line]), BDCols sig2 cols2]
BDCols sig1 cols BDCols sig1 cols
| BDPar ind line (BDLines lines) <- List.last cols | BDPar _ line (BDLines lines) <- List.last cols
, BDCols sig2 cols2 <- List.last lines , all (\case
, sig1 == sig2 BDCols sig2 _ -> sig1 == sig2
-> Just $ BDLines _ -> False
[ BDCols sig1 )
$ List.init cols lines
++ [BDPar ind line (BDLines $ List.init lines)] -> Just $ BDLines $ BDCols sig1 (List.init cols ++ [line]) : lines
, BDCols sig2 cols2
]
BDLines [x] -> Just $ x BDLines [x] -> Just $ x
BDLines [] -> Just $ BDEmpty BDLines [] -> Just $ BDEmpty
BDSeq{} -> Nothing BDSeq{} -> Nothing

View File

@ -25,6 +25,7 @@ where
import Language.Haskell.Brittany.Internal.Prelude import Language.Haskell.Brittany.Internal.Prelude
import qualified Data.Maybe
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Data.Text.Lazy.Builder as Text.Builder import qualified Data.Text.Lazy.Builder as Text.Builder
import qualified GHC.OldList as List import qualified GHC.OldList as List
@ -157,7 +158,9 @@ layoutWriteComment absolute isBlock dp commentLines s = do -- TODO92 we don't mo
PlannedNewline l -> PlannedNewline l ->
if l <= y then PlannedSameline 1 else PlannedNewline (l - y) if l <= y then PlannedSameline 1 else PlannedNewline (l - y)
PlannedDelta l i -> PlannedDelta l i ->
if l <= y then PlannedSameline 1 else PlannedDelta (l - y) i if l <= y && Data.Maybe.isNothing (_lstate_markerForDelta state)
then PlannedSameline 1
else PlannedDelta (l - y) i
else case _lstate_plannedSpace state of else case _lstate_plannedSpace state of
PlannedNone -> PlannedDelta 1 (_lstate_curY state) PlannedNone -> PlannedDelta 1 (_lstate_curY state)
PlannedSameline i -> PlannedDelta 1 (_lstate_curY state + i) PlannedSameline i -> PlannedDelta 1 (_lstate_curY state + i)