dev: fix warnings with ghc 9.10 / base 4.20

Older ghc versions should also still build cleanly (tested with 9.8 so far).

I don't like enabling CPP in so many modules but it's easier that
figuring out how to do it with base-compat; hopefully no noticeable
compilation impact.
This commit is contained in:
Simon Michael 2024-09-30 11:10:16 -10:00
parent 1b60ebb61f
commit c92b601028
10 changed files with 54 additions and 17 deletions

View File

@ -34,7 +34,10 @@ module Hledger.Data.Account
import qualified Data.HashSet as HS import qualified Data.HashSet as HS
import qualified Data.HashMap.Strict as HM import qualified Data.HashMap.Strict as HM
import Data.List (find, foldl', sortOn) import Data.List (find, sortOn)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import Data.List.Extra (groupOn) import Data.List.Extra (groupOn)
import qualified Data.Map as M import qualified Data.Map as M
import Data.Ord (Down(..)) import Data.Ord (Down(..))

View File

@ -39,6 +39,7 @@ with similar amounts since it mostly ignores costss and commodity exchange rates
-} -}
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NamedFieldPuns #-}
@ -175,7 +176,10 @@ import Data.Char (isDigit)
import Data.Decimal (DecimalRaw(..), decimalPlaces, normalizeDecimal, roundTo) import Data.Decimal (DecimalRaw(..), decimalPlaces, normalizeDecimal, roundTo)
import Data.Default (Default(..)) import Data.Default (Default(..))
import Data.Foldable (toList) import Data.Foldable (toList)
import Data.List (find, foldl', intercalate, intersperse, mapAccumL, partition) import Data.List (find, intercalate, intersperse, mapAccumL, partition)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import Data.List.NonEmpty (NonEmpty(..), nonEmpty) import Data.List.NonEmpty (NonEmpty(..), nonEmpty)
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import qualified Data.Set as S import qualified Data.Set as S

View File

@ -1,9 +1,10 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE Rank2Types #-} {-# LANGUAGE Rank2Types #-}
{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-} {-# LANGUAGE TupleSections #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
{-| {-|
@ -122,7 +123,10 @@ import Control.Monad.State.Strict (StateT)
import Data.Char (toUpper, isDigit) import Data.Char (toUpper, isDigit)
import Data.Default (Default(..)) import Data.Default (Default(..))
import Data.Foldable (toList) import Data.Foldable (toList)
import Data.List ((\\), find, foldl', sortBy, union, intercalate) import Data.List ((\\), find, sortBy, union, intercalate)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import Data.List.Extra (nubSort) import Data.List.Extra (nubSort)
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import Data.Maybe (catMaybes, fromMaybe, mapMaybe, maybeToList) import Data.Maybe (catMaybes, fromMaybe, mapMaybe, maybeToList)

View File

@ -1,4 +1,3 @@
{-# LANGUAGE NamedFieldPuns #-}
{-| {-|
A 'Posting' represents a change (by some 'MixedAmount') of the balance in A 'Posting' represents a change (by some 'MixedAmount') of the balance in
@ -8,6 +7,8 @@ look up the date or description there.
-} -}
{-# LANGUAGE CPP #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
module Hledger.Data.Posting ( module Hledger.Data.Posting (
@ -82,7 +83,10 @@ import Data.Foldable (asum)
import Data.Function ((&)) import Data.Function ((&))
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe (fromMaybe, isJust, mapMaybe) import Data.Maybe (fromMaybe, isJust, mapMaybe)
import Data.List (foldl', sort, union) import Data.List (sort, union)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import qualified Data.Set as S import qualified Data.Set as S
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T

View File

@ -14,6 +14,7 @@ Most of the code for reading rules files and csv files is in this module.
-- stack haddock hledger-lib --fast --no-haddock-deps --haddock-arguments='--ignore-all-exports' --open -- stack haddock hledger-lib --fast --no-haddock-deps --haddock-arguments='--ignore-all-exports' --open
--- ** language --- ** language
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
@ -52,7 +53,10 @@ import Control.Monad.Trans.Class (lift)
import Data.Char (toLower, isDigit, isSpace, isAlphaNum, ord) import Data.Char (toLower, isDigit, isSpace, isAlphaNum, ord)
import Data.Bifunctor (first) import Data.Bifunctor (first)
import Data.Functor ((<&>)) import Data.Functor ((<&>))
import Data.List (elemIndex, foldl', mapAccumL, nub, sortOn) import Data.List (elemIndex, mapAccumL, nub, sortOn)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import Data.List.Extra (groupOn) import Data.List.Extra (groupOn)
import Data.Maybe (catMaybes, fromMaybe, isJust) import Data.Maybe (catMaybes, fromMaybe, isJust)
import Data.MemoUgly (memo) import Data.MemoUgly (memo)
@ -1325,9 +1329,7 @@ parseAmount rules record currency s =
,showRules rules record ,showRules rules record
-- ,"the default-currency is: "++fromMaybe "unspecified" (getDirective "default-currency" rules) -- ,"the default-currency is: "++fromMaybe "unspecified" (getDirective "default-currency" rules)
,"the parse error is: " <> T.pack (customErrorBundlePretty e) ,"the parse error is: " <> T.pack (customErrorBundlePretty e)
,"you may need to \ ,"you may need to change your amount*, balance*, or currency* rules, or add or change your skip rule"
\change your amount*, balance*, or currency* rules, \
\or add or change your skip rule"
] ]
-- | Show the values assigned to each journal field. -- | Show the values assigned to each journal field.

View File

@ -3,6 +3,8 @@ Utilities used throughout hledger, or needed low in the module hierarchy.
These are the bottom of hledger's module graph. These are the bottom of hledger's module graph.
-} -}
{-# LANGUAGE CPP #-}
module Hledger.Utils ( module Hledger.Utils (
-- * Functions -- * Functions
@ -69,7 +71,10 @@ where
import Data.Char (toLower) import Data.Char (toLower)
import Data.List (intersperse) import Data.List (intersperse)
import Data.List.Extra (chunksOf, foldl', foldl1', uncons, unsnoc) import Data.List.Extra (chunksOf, foldl1', uncons, unsnoc)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Text as T (pack, unpack) import qualified Data.Text as T (pack, unpack)
import Data.Tree (foldTree, Tree (Node, subForest)) import Data.Tree (foldTree, Tree (Node, subForest))

View File

@ -1,7 +1,3 @@
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-| {-|
Easy regular expression helpers, currently based on regex-tdfa. These should: Easy regular expression helpers, currently based on regex-tdfa. These should:
@ -42,6 +38,12 @@ Current limitations:
-} -}
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Hledger.Utils.Regex ( module Hledger.Utils.Regex (
-- * Regexp type and constructors -- * Regexp type and constructors
Regexp(reString) Regexp(reString)
@ -66,7 +68,9 @@ import Control.Monad (foldM)
import Data.Aeson (ToJSON(..), Value(String)) import Data.Aeson (ToJSON(..), Value(String))
import Data.Array ((!), elems, indices) import Data.Array ((!), elems, indices)
import Data.Char (isDigit) import Data.Char (isDigit)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl') import Data.List (foldl')
#endif
import Data.MemoUgly (memo) import Data.MemoUgly (memo)
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T

View File

@ -233,6 +233,7 @@ Currently, empty cells show 0.
-} -}
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
@ -272,7 +273,10 @@ import Control.Monad (guard)
import Data.Decimal (roundTo) import Data.Decimal (roundTo)
import Data.Default (def) import Data.Default (def)
import Data.Function (on) import Data.Function (on)
import Data.List (find, transpose, foldl') import Data.List (find, transpose)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as S import qualified Data.Set as S
import Data.Maybe (mapMaybe, fromMaybe) import Data.Maybe (mapMaybe, fromMaybe)

View File

@ -1,3 +1,4 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
@ -11,7 +12,10 @@ module Hledger.Cli.Commands.Rewrite (
where where
import Data.Functor.Identity import Data.Functor.Identity
import Data.List (sortOn, foldl') import Data.List (sortOn)
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl')
#endif
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Text.IO as T import qualified Data.Text.IO as T

View File

@ -1,3 +1,4 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
@ -14,7 +15,9 @@ module Hledger.Cli.CompoundBalanceCommand (
,compoundBalanceCommand ,compoundBalanceCommand
) where ) where
#if !MIN_VERSION_base(4,20,0)
import Data.List (foldl') import Data.List (foldl')
#endif
import Data.Maybe (fromMaybe, mapMaybe) import Data.Maybe (fromMaybe, mapMaybe)
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy as TL