From 49a2529a5b0ce7ee8b3b51b5207f493c6a5b32bd Mon Sep 17 00:00:00 2001
From: Lennart Spitzner <hexagoxel@hexagoxel.de>
Date: Tue, 30 May 2023 10:44:30 +0200
Subject: [PATCH] Fix exactprinting fallback for inline splice

---
 .../Brittany/Internal/ToBriDocTools.hs        | 36 +++++++++----------
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/source/library/Language/Haskell/Brittany/Internal/ToBriDocTools.hs b/source/library/Language/Haskell/Brittany/Internal/ToBriDocTools.hs
index c0dac9f..1058c54 100644
--- a/source/library/Language/Haskell/Brittany/Internal/ToBriDocTools.hs
+++ b/source/library/Language/Haskell/Brittany/Internal/ToBriDocTools.hs
@@ -89,31 +89,27 @@ briDocByExactInlineOnly
      )
   => String
   -> GHC.XRec GhcPs a
-  -> ToBriDocM BriDocNumbered
+  -> ToBriDocM (BriDocNumbered)
 briDocByExactInlineOnly infoStr ast = do
-  traceIfDumpConf
-    "ast"
-    _dconf_dump_ast_unknown
-    (printTreeWithCustom 160 customLayouterF ast)
-  let exactPrinted = Text.pack $ ExactPrint.exactPrint ast
+  traceIfDumpConf "ast"
+                  _dconf_dump_ast_unknown
+                  (printTreeWithCustom 160 customLayouterF ast)
+  let exactPrinted =
+        dropWhile Text.null $ Text.lines $ Text.pack $ ExactPrint.exactPrint ast
   fallbackMode <-
     mAsk <&> _conf_errorHandling .> _econf_ExactPrintFallback .> confUnpack
-  let
-    exactPrintNode t =
-      allocateNode $ BDExternal
-      -- (ExactPrint.Types.mkAnnKey ast)
-      -- (foldedAnnKeys ast)
-                                 False t
-  let
-    errorAction = do
-      mTell [ErrorUnknownNode infoStr ast]
-      docLit $ Text.pack "{- BRITTANY ERROR UNHANDLED SYNTACTICAL CONSTRUCT -}"
+  let exactPrintNode t = allocateNode $ BDExternal False t
+  let errorAction = do
+        mTell [ErrorUnknownNode infoStr ast]
+        docLit
+          $ Text.pack "{- BRITTANY ERROR UNHANDLED SYNTACTICAL CONSTRUCT -}"
   mModify (+ connectedCommentCount ast)
-  case (fallbackMode, Text.lines exactPrinted) of
-    (ExactPrintFallbackModeNever, _) -> errorAction
-    (_, [t]) -> exactPrintNode
+  case (fallbackMode, exactPrinted) of
+    (ExactPrintFallbackModeNever, _  ) -> errorAction
+    (_                          , [t]) -> exactPrintNode
       (Text.dropWhile Char.isSpace . Text.dropWhileEnd Char.isSpace $ t)
-    (ExactPrintFallbackModeRisky, _) -> exactPrintNode exactPrinted
+    (ExactPrintFallbackModeRisky, _) -> exactPrintNode
+      (Text.unlines exactPrinted)
     _ -> errorAction
 
 rdrNameToText :: RdrName -> Text