Skip to content
This repository was archived by the owner on Jan 9, 2026. It is now read-only.

Commit 6098d80

Browse files
committed
fix compiler warnings with GHC-9.10
1 parent 8ade427 commit 6098d80

File tree

9 files changed

+29
-7
lines changed

9 files changed

+29
-7
lines changed

pact.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ library
214214
build-depends:
215215
-- internal
216216
, pact-prettyprinter
217+
, pact:unsafe
217218

218219
-- external
219220
, Decimal >=0.4.2

src-tool/Pact/Analyze/Feature.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
module Pact.Analyze.Feature where
1313

1414
import Control.Lens (Prism', preview, prism', review)
15+
#if !MIN_VERSION_base(4,20,0)
1516
import Data.Foldable (foldl')
17+
#endif
1618
import qualified Data.Map as Map
1719
import Data.Map.Strict (Map)
1820
import Data.Set (Set)

src-tool/Pact/Analyze/Translate.hs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE CPP #-}
12
{-# LANGUAGE DataKinds #-}
23
{-# LANGUAGE FlexibleContexts #-}
34
{-# LANGUAGE GADTs #-}
@@ -32,8 +33,13 @@ import Control.Monad.Reader (MonadReader (local),
3233
ReaderT (runReaderT))
3334
import Control.Monad.State.Strict (MonadState, StateT, evalStateT,
3435
modify', runStateT)
36+
#if MIN_VERSION_base(4,20,0)
37+
import Data.Foldable (for_, foldlM)
38+
#else
3539
import Data.Foldable (foldl', for_, foldlM)
40+
#endif
3641
import Data.List (sort)
42+
import Data.List.Unsafe (unsafeTail)
3743
import qualified Data.Map as Map
3844
import Data.Map.Strict (Map)
3945
import Data.Maybe (fromMaybe, isNothing)
@@ -754,7 +760,7 @@ translatePact nodes = do
754760
-- The proper fix is recognizing the nested defpact dyn invoke and replacing it with
755761
-- the default value of what the invocation would return.
756762
-- For now, this unblocks the problem.
757-
(if null protoSteps then [] else tail $ reverse protoSteps)
763+
(if null protoSteps then [] else unsafeTail $ reverse protoSteps)
758764

759765
let steps = zipWith3
760766
(\(Step exec p e _ _) mCancel mRb -> Step exec p e mCancel mRb)

src/Crypto/Hash/PoseidonNative.hs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
{-# LANGUAGE BangPatterns #-}
2-
{-# LANGUAGE OverloadedStrings #-}
3-
{-# LANGUAGE TypeOperators #-}
2+
{-# LANGUAGE CPP #-}
43
{-# LANGUAGE DataKinds #-}
54
{-# LANGUAGE DeriveAnyClass #-}
65
{-# LANGUAGE DeriveGeneric #-}
6+
{-# LANGUAGE OverloadedStrings #-}
7+
{-# LANGUAGE TypeOperators #-}
78

89
module Crypto.Hash.PoseidonNative (poseidon) where
910

11+
#if !MIN_VERSION_base(4,20,0)
1012
import Data.List(foldl')
13+
#endif
1114
import qualified Data.Primitive.Array as Array
1215
import qualified Data.Primitive.SmallArray as SmallArray
1316

src/Pact/ApiReq.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import qualified Data.ByteString.Short as SBS
5555
import Data.Default (def)
5656
import Data.Foldable
5757
import Data.List
58+
import Data.List.Unsafe
5859
import Data.List.NonEmpty (NonEmpty(..))
5960
import qualified Data.Set as S
6061
import qualified Data.Map.Strict as Map
@@ -280,7 +281,7 @@ combineSigDatas sds outputLocal = do
280281
when (S.size hashes /= 1 || S.size cmds /= 1) $ do
281282
error "SigData files must contain exactly one unique hash and command. Aborting..."
282283
let sigs = foldl1 f $ map _sigDataSigs sds
283-
returnCommandIfDone outputLocal $ SigData (head $ S.toList hashes) sigs (Just $ head $ S.toList cmds)
284+
returnCommandIfDone outputLocal $ SigData (unsafeHead $ S.toList hashes) sigs (Just $ unsafeHead $ S.toList cmds)
284285
where
285286
f accum sigs
286287
| length accum /= length sigs = error "Sig lists have different lengths"

src/Pact/Eval.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ import Data.Functor.Classes
6565
import Data.Graph
6666
import qualified Data.HashMap.Strict as HM
6767
import Data.IORef
68+
import Data.List.Unsafe
6869
import qualified Data.Map.Strict as M
6970
import Data.Maybe
7071
import qualified Data.Vector as V
@@ -661,7 +662,7 @@ enforceAcyclic
661662
enforceAcyclic info cs = forM cs $ \c -> case c of
662663
AcyclicSCC v -> return v
663664
CyclicSCC vs -> do
664-
let i = if null vs then info else _tInfo $ view _1 $ head vs
665+
let i = if null vs then info else _tInfo $ view _1 $ unsafeHead vs
665666
pl = over (traverse . _3) (SomeDoc . prettyList)
666667
$ over (traverse . _1) (fmap mkSomeDoc)
667668
$ vs

src/Pact/Native/Pairing.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{-# LANGUAGE BangPatterns #-}
2+
{-# LANGUAGE CPP #-}
23
{-# LANGUAGE DataKinds #-}
34
{-# LANGUAGE DerivingStrategies #-}
45
{-# LANGUAGE FlexibleContexts #-}
@@ -55,7 +56,11 @@ import Data.Group(Group(..))
5556
import Data.Euclidean (Euclidean, GcdDomain)
5657
import Data.Semiring (Semiring, Ring)
5758
import Data.Field (Field)
59+
#if MIN_VERSION_base(4,20,0)
60+
import Data.Foldable (forM_, traverse_)
61+
#else
5862
import Data.Foldable (forM_, foldl', traverse_)
63+
#endif
5964
import qualified Data.Vector as G
6065
import qualified Data.Vector.Mutable as MG
6166
import qualified Data.Semiring as SR

src/Pact/Repl/Lib.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ import Control.Monad.State.Strict (get,put)
3232
import Data.Aeson (eitherDecode)
3333
import qualified Data.ByteString.Lazy as BSL
3434
import Data.Default
35+
#if !MIN_VERSION_base(4,20,0)
3536
import Data.Foldable
37+
#endif
3638
import Data.IORef
3739
import qualified Data.Map.Strict as M
3840
import qualified Data.HashMap.Strict as HM

src/Pact/Typechecker.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import Data.Default
4444
import Data.Foldable
4545
import qualified Data.HashMap.Strict as HM
4646
import Data.List
47+
import Data.List.Unsafe (unsafeHead)
4748
import Data.List.NonEmpty (NonEmpty (..))
4849
import qualified Data.List.NonEmpty as NE
4950
import qualified Data.Map.Strict as M
@@ -1006,7 +1007,7 @@ toAST (TApp Term.App{..} _) = do
10061007
return app'
10071008
Resume -> do
10081009
app' <- specialBind
1009-
case head args' of -- 'specialBind' ensures non-empty args
1010+
case unsafeHead args' of -- 'specialBind' ensures non-empty args
10101011
(Binding _ _ _ (AstBindSchema sty)) ->
10111012
setOrAssocYR yrResume sty
10121013
a -> die'' a "Expected binding"
@@ -1205,7 +1206,7 @@ showFails = do
12051206

12061207
-- | unsafe lens for using `typecheckBody` with const
12071208
singLens :: Iso' a [a]
1208-
singLens = iso pure head
1209+
singLens = iso pure unsafeHead
12091210

12101211
-- | Typecheck a top-level production.
12111212
typecheck :: TopLevel Node -> TC (TopLevel Node)

0 commit comments

Comments
 (0)