Unify "(#", "#)" under single name, docParenHashL and docParenHashR
parent
6898d3ef44
commit
9755db1d05
|
@ -653,11 +653,12 @@ jaicyhHumzo btrKpeyiFej mava = do
|
|||
|
||||
#test unboxed-tuple and vanilla names
|
||||
{-# LANGUAGE UnboxedTuples #-}
|
||||
spanKey :: (# Int, Int #) -> (# Int, Int #)
|
||||
spanKey = case foo of
|
||||
(# bar, baz #) -> (# baz, bar #)
|
||||
|
||||
#test unboxed-tuple and hashed name
|
||||
{-# LANGUAGE MagicHash, UnboxedTuples #-}
|
||||
spanKey :: _ -> (# Int#, Int# #)
|
||||
spanKey :: (# Int#, Int# #) -> (# Int#, Int# #)
|
||||
spanKey = case foo of
|
||||
(# bar#, baz# #) -> (# baz# +# bar#, bar# #)
|
||||
|
|
|
@ -50,7 +50,12 @@ module Language.Haskell.Brittany.Internal.LayouterBasics
|
|||
, appSep
|
||||
, docCommaSep
|
||||
, docParenLSep
|
||||
, docParenL
|
||||
, docParenR
|
||||
, docParenHashL
|
||||
, docParenHashR
|
||||
, docBracketL
|
||||
, docBracketR
|
||||
, docTick
|
||||
, spacifyDocs
|
||||
, briDocMToPPM
|
||||
|
@ -530,11 +535,27 @@ docCommaSep :: ToBriDocM BriDocNumbered
|
|||
docCommaSep = appSep $ docLit $ Text.pack ","
|
||||
|
||||
docParenLSep :: ToBriDocM BriDocNumbered
|
||||
docParenLSep = appSep $ docLit $ Text.pack "("
|
||||
docParenLSep = appSep docParenL
|
||||
|
||||
docParenL :: ToBriDocM BriDocNumbered
|
||||
docParenL = docLit $ Text.pack "("
|
||||
|
||||
docParenR :: ToBriDocM BriDocNumbered
|
||||
docParenR = docLit $ Text.pack ")"
|
||||
|
||||
docParenHashL :: ToBriDocM BriDocNumbered
|
||||
docParenHashL = docSeq [docLit $ Text.pack "(#", docSeparator]
|
||||
|
||||
docParenHashR :: ToBriDocM BriDocNumbered
|
||||
docParenHashR = docSeq [docSeparator, docLit $ Text.pack "#)"]
|
||||
|
||||
docBracketL :: ToBriDocM BriDocNumbered
|
||||
docBracketL = docLit $ Text.pack "["
|
||||
|
||||
docBracketR :: ToBriDocM BriDocNumbered
|
||||
docBracketR = docLit $ Text.pack "]"
|
||||
|
||||
|
||||
docTick :: ToBriDocM BriDocNumbered
|
||||
docTick = docLit $ Text.pack "'"
|
||||
|
||||
|
|
|
@ -372,10 +372,7 @@ layoutExpr lexpr@(L _ expr) = do
|
|||
hasComments <- hasAnyCommentsBelow lexpr
|
||||
let (openLit, closeLit) = case boxity of
|
||||
Boxed -> (docLit $ Text.pack "(", docLit $ Text.pack ")")
|
||||
Unboxed ->
|
||||
( docSeq [docLit $ Text.pack "(#", docSeparator]
|
||||
, docSeq [docSeparator, docLit $ Text.pack "#)"]
|
||||
)
|
||||
Unboxed -> (docParenHashL, docParenHashR)
|
||||
case splitFirstLast argDocs of
|
||||
FirstLastEmpty -> docSeq
|
||||
[ openLit
|
||||
|
|
|
@ -140,8 +140,8 @@ layoutPat lpat@(L _ pat) = docWrapNode lpat $ case pat of
|
|||
-- (nestedpat1, nestedpat2, nestedpat3) -> expr
|
||||
-- (#nestedpat1, nestedpat2, nestedpat3#) -> expr
|
||||
case boxity of
|
||||
Boxed -> wrapPatListy args "(" ")" False
|
||||
Unboxed -> wrapPatListy args "(#" "#)" True
|
||||
Boxed -> wrapPatListy args "()" docParenL docParenR
|
||||
Unboxed -> wrapPatListy args "(##)" docParenHashL docParenHashR
|
||||
AsPat asName asPat -> do
|
||||
-- bind@nestedpat -> expr
|
||||
wrapPatPrepend asPat (docLit $ lrdrNameToText asName <> Text.pack "@")
|
||||
|
@ -172,7 +172,7 @@ layoutPat lpat@(L _ pat) = docWrapNode lpat $ case pat of
|
|||
ListPat elems _ _ ->
|
||||
-- [] -> expr1
|
||||
-- [nestedpat1, nestedpat2, nestedpat3] -> expr2
|
||||
wrapPatListy elems "[" "]" False
|
||||
wrapPatListy elems "[]" docBracketL docBracketR
|
||||
BangPat pat1 -> do
|
||||
-- !nestedpat -> expr
|
||||
wrapPatPrepend pat1 (docLit $ Text.pack "!")
|
||||
|
@ -212,24 +212,18 @@ wrapPatPrepend pat prepElem = do
|
|||
wrapPatListy
|
||||
:: [Located (Pat GhcPs)]
|
||||
-> String
|
||||
-> String
|
||||
-> Bool
|
||||
-> ToBriDocM BriDocNumbered
|
||||
-> ToBriDocM BriDocNumbered
|
||||
-> ToBriDocM (Seq BriDocNumbered)
|
||||
wrapPatListy elems start end padSeparators = do
|
||||
wrapPatListy elems both start end = do
|
||||
elemDocs <- Seq.fromList elems `forM` (layoutPat >=> colsWrapPat)
|
||||
case Seq.viewl elemDocs of
|
||||
Seq.EmptyL -> fmap Seq.singleton $ docLit $ Text.pack $ start ++ end
|
||||
Seq.EmptyL -> fmap Seq.singleton $ docLit $ Text.pack both
|
||||
x1 Seq.:< rest -> do
|
||||
sDoc <- docLit $ Text.pack start
|
||||
eDoc <- docLit $ Text.pack end
|
||||
let sDoc' | padSeparators = docSeq [return sDoc, docSeparator]
|
||||
| otherwise = return sDoc
|
||||
eDoc' | padSeparators = docSeq [docSeparator, return eDoc]
|
||||
| otherwise = return eDoc
|
||||
sDoc'' <- sDoc'
|
||||
eDoc'' <- eDoc'
|
||||
sDoc <- start
|
||||
eDoc <- end
|
||||
rest' <- rest `forM` \bd -> docSeq
|
||||
[ docCommaSep
|
||||
, return bd
|
||||
]
|
||||
return $ (sDoc'' Seq.<| x1 Seq.<| rest') Seq.|> eDoc''
|
||||
return $ (sDoc Seq.<| x1 Seq.<| rest') Seq.|> eDoc
|
||||
|
|
|
@ -407,8 +407,8 @@ layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
|||
]
|
||||
unboxedL = do
|
||||
docs <- docSharedWrapper layoutType `mapM` typs
|
||||
let start = docSeq [docLit $ Text.pack "(#", docSeparator]
|
||||
end = docSeq [docSeparator, docLit $ Text.pack "#)"]
|
||||
let start = docParenHashL
|
||||
end = docParenHashR
|
||||
docAlt
|
||||
[ docSeq $ [start]
|
||||
++ List.intersperse docCommaSep docs
|
||||
|
|
Loading…
Reference in New Issue