Respect empty lines after let keyword
parent
687b59c62f
commit
91300f5316
|
@ -720,6 +720,10 @@ instance DocFlushCommsPost (Maybe GHC.RealSrcSpan) (ToBriDocM BriDocNumbered) wh
|
|||
bd <- bdm
|
||||
pure (i1, BDFlushCommentsPost (GHC.realSrcSpanEnd loc) shouldMark bd)
|
||||
|
||||
instance DocFlushCommsPost GHC.EpaLocation (ToBriDocM BriDocNumbered) where
|
||||
docFlushCommsPost shouldMark epaLocation =
|
||||
docFlushCommsPost shouldMark (Just $ GHC.epaLocationRealSrcSpan epaLocation)
|
||||
|
||||
instance DocFlushCommsPost ann (ToBriDocM BriDocNumbered)
|
||||
=> DocFlushCommsPost ann (ToBriDocM [BriDocNumbered]) where
|
||||
docFlushCommsPost shouldMark loc bdm = do
|
||||
|
|
|
@ -556,7 +556,10 @@ layoutExpr lexpr@(L _ expr) = do
|
|||
-- to making brittany idempotent, even though the result is non-optimal
|
||||
-- if "let" is moved horizontally as part of the transformation, as the
|
||||
-- comments before the first let item are moved horizontally with it.
|
||||
letDoc <- shareDoc $ wrapLet $ docLit $ Text.pack "let"
|
||||
letDoc <- shareDoc
|
||||
$ docFlushCommsPost True spanLet
|
||||
$ wrapLet
|
||||
$ docLitS "let"
|
||||
inDoc <- shareDoc $ wrapIn $ docLit $ Text.pack "in"
|
||||
docSetBaseAndIndent $ case fmap snd mBindDocs of
|
||||
Just [bindDoc] -> runFilteredAlternative $ do
|
||||
|
|
|
@ -47,18 +47,20 @@ layoutStmt lstmt@(L _ stmt) = do
|
|||
]
|
||||
]
|
||||
LetStmt epAnn binds -> docHandleComms epAnn $ do
|
||||
let spanLet = obtainAnnPos epAnn AnnLet
|
||||
letDoc <- shareDoc $ docFlushCommsPost True spanLet $ docLitS "let"
|
||||
let isFree = indentPolicy == IndentPolicyFree
|
||||
let indentFourPlus = indentAmount >= 4
|
||||
(wrapBinds, bindrDocsMay) <- callLayouter layout_localBinds binds
|
||||
case bindrDocsMay of
|
||||
Nothing -> docLit $ Text.pack "let"
|
||||
Nothing -> letDoc
|
||||
-- i just tested the above, and it is indeed allowed. heh.
|
||||
Just (_, []) -> docLit $ Text.pack "let" -- this probably never happens
|
||||
Just (_, []) -> letDoc -- this probably never happens
|
||||
Just (_, [bindDoc]) -> docAlt
|
||||
[ -- let bind = expr
|
||||
docCols
|
||||
ColDoLet
|
||||
[ appSep $ docLit $ Text.pack "let"
|
||||
[ appSep $ letDoc
|
||||
, let
|
||||
f = case indentPolicy of
|
||||
IndentPolicyFree -> docSetBaseAndIndent
|
||||
|
@ -71,7 +73,7 @@ layoutStmt lstmt@(L _ stmt) = do
|
|||
, -- let
|
||||
-- bind = expr
|
||||
docAddBaseY BrIndentRegular $ docPar
|
||||
(docLit $ Text.pack "let")
|
||||
letDoc
|
||||
(wrapBinds $ docSetBaseAndIndent $ return bindDoc)
|
||||
]
|
||||
Just (_, bindDocs) -> runFilteredAlternative $ do
|
||||
|
@ -79,7 +81,7 @@ layoutStmt lstmt@(L _ stmt) = do
|
|||
-- bbb = exprb
|
||||
-- ccc = exprc
|
||||
addAlternativeCond (isFree || indentFourPlus) $ docSeq
|
||||
[ appSep $ docLit $ Text.pack "let"
|
||||
[ appSep $ letDoc
|
||||
, let
|
||||
f = if indentFourPlus
|
||||
then docEnsureIndent BrIndentRegular
|
||||
|
@ -93,7 +95,7 @@ layoutStmt lstmt@(L _ stmt) = do
|
|||
addAlternativeCond (not indentFourPlus)
|
||||
$ docAddBaseY BrIndentRegular
|
||||
$ docPar
|
||||
(docLit $ Text.pack "let")
|
||||
letDoc
|
||||
(wrapBinds $ docSetBaseAndIndent $ docLines $ return <$> bindDocs)
|
||||
RecStmt epAnn (L _ stmts) _ _ _ _ _ ->
|
||||
docHandleComms epAnn $ runFilteredAlternative $ do
|
||||
|
|
Loading…
Reference in New Issue