@@ -37,7 +37,6 @@ import Data.Function (on)
37import Data.Functor.Identity
37import Data.Functor.Identity
38import Data.List (groupBy, sortBy)
38import Data.List (groupBy, sortBy)
40−import qualified Data.Data as D
41import qualified Data.Generics as G
40import qualified Data.Generics as G
42import qualified Data.Generics.Extras as G
41import qualified Data.Generics.Extras as G
@@ -57,7 +56,6 @@ rebracket ms = do
57 let opTable = customOperatorTable $ map (\(i, _, f) -> (i, f)) fixities
56 let opTable = customOperatorTable $ map (\(i, _, f) -> (i, f)) fixities
58 mapM (rebracketModule opTable) ms
57 mapM (rebracketModule opTable) ms
61removeSignedLiterals :: Module -> Module
59removeSignedLiterals :: Module -> Module
62removeSignedLiterals (Module mn ds exts) = Module mn (map f' ds) exts
60removeSignedLiterals (Module mn ds exts) = Module mn (map f' ds) exts
@@ -69,10 +67,12 @@ removeSignedLiterals (Module mn ds exts) = Module mn (map f' ds) exts
69 go other = other
67 go other = other
71rebracketModule :: [[(Qualified Ident, Value -> Value -> Value, Associativity)]] -> Module -> Either ErrorStack Module
69rebracketModule :: [[(Qualified Ident, Value -> Value -> Value, Associativity)]] -> Module -> Either ErrorStack Module
72−rebracketModule opTable (Module mn ds exts) = Module mn <$> (removeParens <$> G.everywhereM' (G.mkM (matchOperators opTable)) ds) <*> pure exts
70+rebracketModule opTable (Module mn ds exts) = Module mn <$> (map removeParens <$> G.everywhereM' (G.mkM (matchOperators opTable)) ds) <*> pure exts
74−removeParens :: (D.Data d) => d -> d
72+removeParens :: Declaration -> Declaration
75−removeParens = G.everywhere (G.mkT go)
73+removeParens =
74+ let (f, _, _) = everywhereOnValues id go id
77 go (Parens val) = val
77 go (Parens val) = val
78 go val = val
78 go val = val