|
6 | 6 | {-# LANGUAGE ExistentialQuantification #-}
|
7 | 7 | {-# LANGUAGE FlexibleInstances #-}
|
8 | 8 | {-# LANGUAGE GADTSyntax #-}
|
| 9 | +{-# LANGUAGE InstanceSigs #-} |
9 | 10 | {-# LANGUAGE LambdaCase #-}
|
10 | 11 | {-# LANGUAGE MultiParamTypeClasses #-}
|
11 | 12 | {-# LANGUAGE NamedFieldPuns #-}
|
@@ -616,14 +617,24 @@ instance MonadInspectMVar (IOSim s) where
|
616 | 617 | MVarFull x _ -> pure (Just x)
|
617 | 618 |
|
618 | 619 | instance MonadTraceMVar (IOSim s) where
|
619 |
| - traceMVarIO _ (MVar mvar) f = traceTVarIO mvar traceMVarAsTVar |
| 620 | + traceMVarIO :: forall proxy a. |
| 621 | + proxy |
| 622 | + -> MVar (IOSim s) a |
| 623 | + -> ( Maybe (Maybe a) |
| 624 | + -> Maybe a |
| 625 | + -> ST s TraceValue |
| 626 | + ) |
| 627 | + -> IOSim s () |
| 628 | + traceMVarIO _ (MVar mvar) f = traceTVarIO mvar f' |
620 | 629 | where
|
621 |
| - traceMVarAsTVar Nothing (MVarEmpty _ _) = f Nothing Nothing |
622 |
| - traceMVarAsTVar Nothing (MVarFull a _) = f Nothing (Just a) |
623 |
| - traceMVarAsTVar (Just (MVarEmpty _ _)) (MVarEmpty _ _) = f (Just Nothing) Nothing |
624 |
| - traceMVarAsTVar (Just (MVarEmpty _ _)) (MVarFull a _) = f (Just Nothing) (Just a) |
625 |
| - traceMVarAsTVar (Just (MVarFull a _)) (MVarEmpty _ _) = f (Just (Just a)) Nothing |
626 |
| - traceMVarAsTVar (Just (MVarFull a _)) (MVarFull a' _) = f (Just (Just a)) (Just a') |
| 630 | + f' :: Maybe (MVarState m a) |
| 631 | + -> MVarState m a |
| 632 | + -> ST s TraceValue |
| 633 | + f' mst st = f (g <$> mst) (g st) |
| 634 | + |
| 635 | + g :: MVarState m a -> Maybe a |
| 636 | + g MVarEmpty{} = Nothing |
| 637 | + g (MVarFull a _) = Just a |
627 | 638 |
|
628 | 639 | instance MonadLabelledMVar (IOSim s) where
|
629 | 640 | labelMVar = labelMVarDefault
|
|
0 commit comments