From 8a401d291efb44550e4b0a641aa311dab04d3891 Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Tue, 28 Nov 2017 18:23:05 +0100 Subject: [PATCH] Workaround for #68: trim exactprinted text for unknown nodes --- src-literatetests/15-regressions.blt | 3 +++ .../Brittany/Internal/LayouterBasics.hs | 21 +++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src-literatetests/15-regressions.blt b/src-literatetests/15-regressions.blt index 319713b..0876dc3 100644 --- a/src-literatetests/15-regressions.blt +++ b/src-literatetests/15-regressions.blt @@ -490,3 +490,6 @@ func fmapuv :: U.Unbox a => (a -> b) -> U.Vector a -> V.Vector b fmapuv f xs = G.generate (G.length xs) (f . (xs G.!)) + +#test parallellistcomp-workaround +cs0 = 0 : [ c / Interval n | c <- cs | n <- [1..] ] diff --git a/src/Language/Haskell/Brittany/Internal/LayouterBasics.hs b/src/Language/Haskell/Brittany/Internal/LayouterBasics.hs index a0a3c7b..52c9e08 100644 --- a/src/Language/Haskell/Brittany/Internal/LayouterBasics.hs +++ b/src/Language/Haskell/Brittany/Internal/LayouterBasics.hs @@ -82,6 +82,8 @@ import ApiAnnotation ( AnnKeywordId(..) ) import Data.Data import Data.Generics.Schemes +import qualified Data.Char as Char + import DataTreePrint import Data.HList.HList @@ -154,20 +156,21 @@ briDocByExactInlineOnly infoStr ast = do let exactPrinted = Text.pack $ ExactPrint.exactPrint ast anns fallbackMode <- mAsk <&> _conf_errorHandling .> _econf_ExactPrintFallback .> confUnpack - let exactPrintNode = allocateNode $ BDFExternal + let exactPrintNode t = allocateNode $ BDFExternal (ExactPrint.Types.mkAnnKey ast) (foldedAnnKeys ast) False - exactPrinted - let - errorAction = do - mTell $ [ErrorUnknownNode infoStr ast] - docLit $ Text.pack "{- BRITTANY ERROR UNHANDLED SYNTACTICAL CONSTRUCT -}" + t + let errorAction = do + mTell $ [ErrorUnknownNode infoStr ast] + docLit + $ Text.pack "{- BRITTANY ERROR UNHANDLED SYNTACTICAL CONSTRUCT -}" case (fallbackMode, Text.lines exactPrinted) of (ExactPrintFallbackModeNever, _ ) -> errorAction - (_ , [_]) -> exactPrintNode - (ExactPrintFallbackModeRisky, _ ) -> exactPrintNode - _ -> errorAction + (_ , [t]) -> exactPrintNode + (Text.dropWhile Char.isSpace . Text.dropWhileEnd Char.isSpace $ t) + (ExactPrintFallbackModeRisky, _) -> exactPrintNode exactPrinted + _ -> errorAction rdrNameToText :: RdrName -> Text -- rdrNameToText = Text.pack . show . flip runSDoc unsafeGlobalDynFlags . ppr