Open nomeata opened 1 year ago
I’m locally experimenting with this patch, but there are different ways of structuring this code:
diff --git a/src/Language/Haskell/Exts/Pretty.hs b/src/Language/Haskell/Exts/Pretty.hs
index 8d39a2d..6915d44 100644
--- a/src/Language/Haskell/Exts/Pretty.hs
+++ b/src/Language/Haskell/Exts/Pretty.hs
@@ -890,11 +890,11 @@ instance Pretty (Promoted l) where
pretty p =
case p of
PromotedInteger _ n _ -> integer n
- PromotedString _ s _ -> doubleQuotes $ text s
+ PromotedString _ s _ -> text (show s)
PromotedCon _ hasQuote qn ->
addQuote hasQuote (pretty qn)
PromotedList _ hasQuote list ->
- addQuote hasQuote $ bracketList . punctuate comma . map pretty $ list
+ (if hasQuote then quoteBracketList else bracketList) . punctuate comma . map pretty $ list
PromotedTuple _ list ->
addQuote True $ parenList $ map pretty list
PromotedUnit {} -> addQuote True $ text "()"
@@ -1450,6 +1450,10 @@ braceList = braces . myFsepSimple . punctuate comma
bracketList :: [Doc] -> Doc
bracketList = brackets . myFsepSimple
+quoteBracketList :: [Doc] -> Doc
+quoteBracketList [] = text "'[]"
+quoteBracketList l = char '\'' <> brackets (space <> myFsepSimple l)
+
bracketColonList :: [Doc] -> Doc
bracketColonList = bracketColons . myFsepSimple
where bracketColons = brackets . colons
This file:
is pretty-printed as such:
but that’s not legal:
My suggestion to is to always add a space after
'[
in the pretty printer.