Lay out unboxed tuples with spaces
This avoids clashes with names like foo#pull/186/head
parent
9d7cecaa92
commit
281d7a2f81
|
@ -650,3 +650,13 @@ jaicyhHumzo btrKpeyiFej mava = do
|
||||||
)
|
)
|
||||||
Xcde{} -> (s, Pioemav)
|
Xcde{} -> (s, Pioemav)
|
||||||
pure imomue
|
pure imomue
|
||||||
|
|
||||||
|
#test unboxed-tuple and vanilla names
|
||||||
|
{-# LANGUAGE UnboxedTuples #-}
|
||||||
|
spanKey = case foo of
|
||||||
|
(# bar, baz #) -> (# baz, bar #)
|
||||||
|
|
||||||
|
#test unboxed-tuple and hashed name
|
||||||
|
{-# LANGUAGE MagicHash, UnboxedTuples #-}
|
||||||
|
spanKey = case foo of
|
||||||
|
(# bar#, baz# #) -> (# baz# +# bar#, bar# #)
|
||||||
|
|
|
@ -372,7 +372,10 @@ layoutExpr lexpr@(L _ expr) = do
|
||||||
hasComments <- hasAnyCommentsBelow lexpr
|
hasComments <- hasAnyCommentsBelow lexpr
|
||||||
let (openLit, closeLit) = case boxity of
|
let (openLit, closeLit) = case boxity of
|
||||||
Boxed -> (docLit $ Text.pack "(", docLit $ Text.pack ")")
|
Boxed -> (docLit $ Text.pack "(", docLit $ Text.pack ")")
|
||||||
Unboxed -> (docLit $ Text.pack "(#", docLit $ Text.pack "#)")
|
Unboxed ->
|
||||||
|
( docSeq [docLit $ Text.pack "(#", docSeparator]
|
||||||
|
, docSeq [docSeparator, docLit $ Text.pack "#)"]
|
||||||
|
)
|
||||||
case splitFirstLast argDocs of
|
case splitFirstLast argDocs of
|
||||||
FirstLastEmpty -> docSeq
|
FirstLastEmpty -> docSeq
|
||||||
[ openLit
|
[ openLit
|
||||||
|
|
|
@ -140,8 +140,8 @@ layoutPat lpat@(L _ pat) = docWrapNode lpat $ case pat of
|
||||||
-- (nestedpat1, nestedpat2, nestedpat3) -> expr
|
-- (nestedpat1, nestedpat2, nestedpat3) -> expr
|
||||||
-- (#nestedpat1, nestedpat2, nestedpat3#) -> expr
|
-- (#nestedpat1, nestedpat2, nestedpat3#) -> expr
|
||||||
case boxity of
|
case boxity of
|
||||||
Boxed -> wrapPatListy args "(" ")"
|
Boxed -> wrapPatListy args "(" ")" False
|
||||||
Unboxed -> wrapPatListy args "(#" "#)"
|
Unboxed -> wrapPatListy args "(#" "#)" True
|
||||||
AsPat asName asPat -> do
|
AsPat asName asPat -> do
|
||||||
-- bind@nestedpat -> expr
|
-- bind@nestedpat -> expr
|
||||||
wrapPatPrepend asPat (docLit $ lrdrNameToText asName <> Text.pack "@")
|
wrapPatPrepend asPat (docLit $ lrdrNameToText asName <> Text.pack "@")
|
||||||
|
@ -172,7 +172,7 @@ layoutPat lpat@(L _ pat) = docWrapNode lpat $ case pat of
|
||||||
ListPat elems _ _ ->
|
ListPat elems _ _ ->
|
||||||
-- [] -> expr1
|
-- [] -> expr1
|
||||||
-- [nestedpat1, nestedpat2, nestedpat3] -> expr2
|
-- [nestedpat1, nestedpat2, nestedpat3] -> expr2
|
||||||
wrapPatListy elems "[" "]"
|
wrapPatListy elems "[" "]" False
|
||||||
BangPat pat1 -> do
|
BangPat pat1 -> do
|
||||||
-- !nestedpat -> expr
|
-- !nestedpat -> expr
|
||||||
wrapPatPrepend pat1 (docLit $ Text.pack "!")
|
wrapPatPrepend pat1 (docLit $ Text.pack "!")
|
||||||
|
@ -213,17 +213,23 @@ wrapPatListy
|
||||||
:: [Located (Pat GhcPs)]
|
:: [Located (Pat GhcPs)]
|
||||||
-> String
|
-> String
|
||||||
-> String
|
-> String
|
||||||
|
-> Bool
|
||||||
-> ToBriDocM (Seq BriDocNumbered)
|
-> ToBriDocM (Seq BriDocNumbered)
|
||||||
wrapPatListy elems start end = do
|
wrapPatListy elems start end padSeparators = do
|
||||||
elemDocs <- Seq.fromList elems `forM` (layoutPat >=> colsWrapPat)
|
elemDocs <- Seq.fromList elems `forM` (layoutPat >=> colsWrapPat)
|
||||||
sDoc <- docLit $ Text.pack start
|
|
||||||
eDoc <- docLit $ Text.pack end
|
|
||||||
case Seq.viewl elemDocs of
|
case Seq.viewl elemDocs of
|
||||||
Seq.EmptyL -> fmap Seq.singleton $ docLit $ Text.pack $ start ++ end
|
Seq.EmptyL -> fmap Seq.singleton $ docLit $ Text.pack $ start ++ end
|
||||||
x1 Seq.:< rest -> do
|
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'
|
||||||
rest' <- rest `forM` \bd -> docSeq
|
rest' <- rest `forM` \bd -> docSeq
|
||||||
[ docLit $ Text.pack ","
|
[ docCommaSep
|
||||||
, docSeparator
|
|
||||||
, return bd
|
, return bd
|
||||||
]
|
]
|
||||||
return $ (sDoc Seq.<| x1 Seq.<| rest') Seq.|> eDoc
|
return $ (sDoc'' Seq.<| x1 Seq.<| rest') Seq.|> eDoc''
|
||||||
|
|
Loading…
Reference in New Issue