From 6898d3ef4459f9aed62556cf3eb76082a32c9869 Mon Sep 17 00:00:00 2001 From: Sergey Vinokurov Date: Tue, 18 Sep 2018 09:03:28 +0100 Subject: [PATCH] Lay out unboxed tuples in types --- src-literatetests/15-regressions.blt | 1 + .../Haskell/Brittany/Internal/Layouters/Type.hs | 17 +++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src-literatetests/15-regressions.blt b/src-literatetests/15-regressions.blt index cb4ac5d..52306c1 100644 --- a/src-literatetests/15-regressions.blt +++ b/src-literatetests/15-regressions.blt @@ -658,5 +658,6 @@ spanKey = case foo of #test unboxed-tuple and hashed name {-# LANGUAGE MagicHash, UnboxedTuples #-} +spanKey :: _ -> (# Int#, Int# #) spanKey = case foo of (# bar#, baz# #) -> (# baz# +# bar#, bar# #) diff --git a/src/Language/Haskell/Brittany/Internal/Layouters/Type.hs b/src/Language/Haskell/Brittany/Internal/Layouters/Type.hs index dfde7f5..2a8f0dd 100644 --- a/src/Language/Haskell/Brittany/Internal/Layouters/Type.hs +++ b/src/Language/Haskell/Brittany/Internal/Layouters/Type.hs @@ -234,7 +234,7 @@ layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of list = List.tail cntxtDocs <&> \cntxtDoc -> docCols ColTyOpPrefix [ docCommaSep - , docAddBaseY (BrIndentSpecial 2) + , docAddBaseY (BrIndentSpecial 2) $ cntxtDoc ] in docPar open $ docLines $ list ++ [close] @@ -407,17 +407,18 @@ 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 "#)"] docAlt - [ docSeq $ [docLit $ Text.pack "(#"] + [ docSeq $ [start] ++ List.intersperse docCommaSep docs - ++ [docLit $ Text.pack "#)"] + ++ [end] , let - start = docCols ColTyOpPrefix [docLit $ Text.pack "(#", head docs] - lines = List.tail docs <&> \d -> - docCols ColTyOpPrefix [docCommaSep, d] - end = docLit $ Text.pack "#)" + start' = docCols ColTyOpPrefix [start, head docs] + lines = List.tail docs <&> \d -> + docCols ColTyOpPrefix [docCommaSep, d] in docPar - (docAddBaseY (BrIndentSpecial 2) start) + (docAddBaseY (BrIndentSpecial 2) start') (docLines $ (docAddBaseY (BrIndentSpecial 2) <$> lines) ++ [end]) ] HsOpTy{} -> -- TODO