1616-- incomplete uni patterns in 'schedule' (when interpreting 'StmTxCommitted')
1717-- and 'reschedule'.
1818{-# OPTIONS_GHC -Wno-incomplete-uni-patterns -Wno-unused-matches #-}
19+ {-# OPTIONS_GHC -Wno-orphans #-}
1920#if __GLASGOW_HASKELL__ >= 908
2021-- We use partial functions from `Data.List`.
2122{-# OPTIONS_GHC -Wno-x-partial #-}
@@ -53,16 +54,16 @@ import Prelude hiding (read)
5354
5455import Data.Dynamic
5556import Data.Foldable (foldlM , traverse_ )
57+ import Data.HashPSQ (HashPSQ )
58+ import Data.HashPSQ qualified as PSQ
59+ import Data.IntPSQ (IntPSQ )
60+ import Data.IntPSQ qualified as IPSQ
5661import Data.List qualified as List
5762import Data.List.Trace qualified as Trace
5863import Data.Map.Strict (Map )
5964import Data.Map.Strict qualified as Map
6065import Data.Maybe (mapMaybe )
6166import Data.Ord
62- import Data.OrdPSQ (OrdPSQ )
63- import Data.OrdPSQ qualified as PSQ
64- import Data.IntPSQ (IntPSQ )
65- import Data.IntPSQ qualified as IPSQ
6667import Data.Set (Set )
6768import Data.Set qualified as Set
6869import Data.Time (UTCTime (.. ), fromGregorian )
@@ -87,7 +88,8 @@ import Control.Monad.IOSim.Types hiding (SimEvent (SimEvent), Trace (SimTrace))
8788import Control.Monad.IOSim.Types (SimEvent )
8889import Control.Monad.IOSimPOR.Timeout (unsafeTimeout )
8990import Control.Monad.IOSimPOR.Types
90- import Data.Coerce (coerce , Coercible )
91+ import Data.Coerce (Coercible , coerce )
92+ import Data.Hashable
9193
9294--
9395-- Simulation interpreter
@@ -181,7 +183,9 @@ data TimerCompletionInfo s =
181183 -- ^ `timeout` timer run by `IOSimThreadId` which was assigned the given
182184 -- `TimeoutId` (only used to report in a trace).
183185
184- type RunQueue = OrdPSQ (Down IOSimThreadId ) (Down IOSimThreadId ) ()
186+ instance Hashable a => Hashable (Down a )
187+
188+ type RunQueue = HashPSQ (Down IOSimThreadId ) (Down IOSimThreadId ) ()
185189type Timeouts s = IntPSQ Time (TimerCompletionInfo s )
186190
187191-- | Internal state.
0 commit comments