From 3f9e9d9bcb07bd3ddfdf8eeec5ff2235007a07b3 Mon Sep 17 00:00:00 2001
From: Lennart Spitzner <hexagoxel@hexagoxel.de>
Date: Fri, 21 Apr 2023 12:22:30 +0000
Subject: [PATCH] Respect and Fix disable-next-binding/decl

---
 .../Brittany/Internal/Config/InlineParsing.hs      | 14 ++++++++------
 .../Haskell/Brittany/Internal/StepOrchestrate.hs   |  3 ++-
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/source/library/Language/Haskell/Brittany/Internal/Config/InlineParsing.hs b/source/library/Language/Haskell/Brittany/Internal/Config/InlineParsing.hs
index c4c5c27..3138748 100644
--- a/source/library/Language/Haskell/Brittany/Internal/Config/InlineParsing.hs
+++ b/source/library/Language/Haskell/Brittany/Internal/Config/InlineParsing.hs
@@ -22,7 +22,6 @@ import           GHC.Parser.Annotation          ( EpaCommentTok
                                                   )
                                                 )
 import qualified UI.Butcher.Monadic            as Butcher
--- import qualified Language.Haskell.GHC.ExactPrint.Utils as ExactPrint.Utils
 import           Control.Monad.Trans.Except
 
 import           Language.Haskell.Brittany.Internal.Config.Config
@@ -31,6 +30,8 @@ import Language.Haskell.Brittany.Internal.Util.AST
 import Language.Haskell.Brittany.Internal.Config.Types.Instances1 ()
 import Language.Haskell.Brittany.Internal.Config.Types.Instances2 ()
 -- import Language.Haskell.Brittany.Internal.Utils
+-- import qualified Language.Haskell.GHC.ExactPrint.Utils as ExactPrint.Utils
+-- import Data.Data(toConstr)
 
 
 
@@ -39,6 +40,7 @@ data InlineConfigTarget
     | InlineConfigTargetNextDecl    -- really only next in module
     | InlineConfigTargetNextBinding -- by name
     | InlineConfigTargetBinding String
+  deriving Show
 
 extractCommentConfigs
   :: (String -> IO ())
@@ -116,13 +118,13 @@ extractCommentConfigs _putErrorLn modul = do
         ]
   let perSpan = Map.fromListWith
         (<>)
-        [ (srcSpan, conf)
+        [ (declSpan, conf)
         | (srcSpan, target, conf) <- lineConfigs
-        , let perBindRes = Map.lookupGT srcSpan declMap
+        , Just (declSpan, names) <- [Map.lookupGT srcSpan declMap]
         , case target of
-          InlineConfigTargetNextDecl -> True
-          InlineConfigTargetNextBinding | Nothing <- perBindRes -> True
-          _                          -> False
+          InlineConfigTargetNextDecl    -> True
+          InlineConfigTargetNextBinding -> null names
+          _ -> False
         ]
 
   pure
diff --git a/source/library/Language/Haskell/Brittany/Internal/StepOrchestrate.hs b/source/library/Language/Haskell/Brittany/Internal/StepOrchestrate.hs
index 6da4220..b1b2f1d 100644
--- a/source/library/Language/Haskell/Brittany/Internal/StepOrchestrate.hs
+++ b/source/library/Language/Haskell/Brittany/Internal/StepOrchestrate.hs
@@ -218,7 +218,8 @@ ppToplevelDecl decl immediateAfterComms = do
     declConfig & _conf_roundtrip_exactprint_only & confUnpack
   bd <- fmap fst $ if exactprintOnly
     then briDocMToPPM layouters
-      $ docSeq (briDocByExact decl : map commentToDoc immediateAfterComms)
+      $ docSeq
+        (briDocByExactNoComment decl : map commentToDoc immediateAfterComms)
     else do
       let innerDoc = case decl of
             L (SrcSpanAnn _ (GHC.RealSrcSpan s _)) _ ->