From e7cdff440d6bfb2adc13556689f972c1fd06b83e Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Mon, 8 May 2023 14:54:16 +0000 Subject: [PATCH] Fix space between paren and multi-line lambda --- data/15-regressions.blt | 10 ++++++++++ .../Haskell/Brittany/Internal/ToBriDoc/OpTree.hs | 7 +++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/data/15-regressions.blt b/data/15-regressions.blt index d698f86..ceb536e 100644 --- a/data/15-regressions.blt +++ b/data/15-regressions.blt @@ -956,3 +956,13 @@ func = other $ meep [q|hello world|] (some other very long linnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnne) + +#test multiline-lambda-whitespace +func = + Text.intercalate + "\n" + ( (\(abc, def) -> + abc ++ def ++ "lkajsdljkasdlkjasldjkljkasd" ++ asdasdasdasd + ) + <$> mylist + ) diff --git a/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/OpTree.hs b/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/OpTree.hs index 5d2db18..0710caf 100644 --- a/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/OpTree.hs +++ b/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/OpTree.hs @@ -223,7 +223,10 @@ layoutOpTree allowSinglelinePar = \case coreAlternative hasParen locO locC fixity docL sharedOps sharedOpsFlat lastWrap = do indentPolicy <- askLayoutConf _lconfig_indentPolicy - let wrapParenIfSl x inner = if x then wrapParenSl inner else docSetParSpacing inner + let zeroOps = null sharedOps + wrapParenIfSl x inner = if x + then wrapParenSl inner + else docSetParSpacing inner wrapParenSl inner = docAlt [ docSeq [ docLit $ Text.pack "(" @@ -241,7 +244,7 @@ layoutOpTree allowSinglelinePar = \case wrapParenMl innerHead innerLines = docSetBaseY $ docLines ( [ docCols ColOpPrefix - [ appSep $ docLit $ Text.pack "(" + [ (if zeroOps then id else appSep) $ docLit $ Text.pack "(" , docHandleComms locO $ innerHead ] ]