Compare commits

..

3 Commits

4 changed files with 77 additions and 33 deletions

View File

@ -1015,3 +1015,39 @@ catchFunc = do
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
)
`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
$ map docSetBaseY
$ clauseDocs
>>= \(grhsEpAnn, guardDocs, bodyDoc) -> -- TODO92
(case guardDocs of
[] -> [docHandleComms grhsEpAnn docEmpty]
[g] ->
[ docHandleComms grhsEpAnn
$ docSeq [appSep
$ docLit $ Text.pack "|", return g]
]
(g1 : gr) ->
( ( docHandleComms grhsEpAnn
$ docSeq [appSep $ docLit $ Text.pack "|", return g1]
)
: (gr <&> \g ->
docSeq [appSep $ docLit $ Text.pack ",", return g]
)
)
)
++ [ docCols
ColOpPrefix
[ appSep $ return binderDoc
, docAddBaseY BrIndentRegular $ return bodyDoc
]
]
>>= \(grhsEpAnn, guardDocs, bodyDoc) -> case guardDocs of
[] ->
[ docHandleComms grhsEpAnn
$ docCols
ColOpPrefix
[ appSep $ return binderDoc
, docAddBaseY BrIndentRegular $ return bodyDoc
]
]
[g] ->
[ docHandleComms grhsEpAnn
$ docSeq [appSep $ docLit $ Text.pack "|", return g]
, docSeq
[ appSep $ return binderDoc
, docAddBaseY BrIndentRegular $ return bodyDoc
]
]
(g1 : gr) ->
( [ docHandleComms grhsEpAnn
$ docSeq [appSep $ docLit $ Text.pack "|", return g1]
]
++ (gr <&> \g ->
docSeq [appSep $ docLit $ Text.pack ",", return g]
)
++ [ docSeq
[ appSep $ return binderDoc
, docAddBaseY BrIndentRegular $ return bodyDoc
]
]
)
]
++ wherePartMultiLine

View File

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

View File

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