diff options
Diffstat (limited to 'testsuite/tests/concurrent/should_run/conc017.hs')
-rw-r--r-- | testsuite/tests/concurrent/should_run/conc017.hs | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/testsuite/tests/concurrent/should_run/conc017.hs b/testsuite/tests/concurrent/should_run/conc017.hs index c1ca4e745a..69c171732e 100644 --- a/testsuite/tests/concurrent/should_run/conc017.hs +++ b/testsuite/tests/concurrent/should_run/conc017.hs @@ -9,31 +9,31 @@ main = do m1 <- newEmptyMVar m2 <- newEmptyMVar m3 <- newEmptyMVar - forkIO (do - takeMVar m1 - throwTo main_thread (ErrorCall "foo") - takeMVar m2 - throwTo main_thread (ErrorCall "bar") - putMVar m3 () - ) - (do + forkIO (do + takeMVar m1 + throwTo main_thread (ErrorCall "foo") + takeMVar m2 + throwTo main_thread (ErrorCall "bar") + putMVar m3 () + ) + (do mask $ \restore -> do - (do putMVar m1 () + (do putMVar m1 () restore ( - -- unblocked, "foo" delivered to "caught1" - myDelay 100000 - ) - ) `Control.Exception.catch` + -- unblocked, "foo" delivered to "caught1" + myDelay 100000 + ) + ) `Control.Exception.catch` \e -> putStrLn ("caught1: " ++ show (e::SomeException)) - putMVar m2 () - -- blocked here, "bar" can't be delivered - (sum [1..10000] `seq` return ()) - `Control.Exception.catch` + putMVar m2 () + -- blocked here, "bar" can't be delivered + (sum [1..10000] `seq` return ()) + `Control.Exception.catch` \e -> putStrLn ("caught2: " ++ show (e::SomeException)) -- unblocked here, "bar" delivered to "caught3" takeMVar m3 - ) - `Control.Exception.catch` + ) + `Control.Exception.catch` \e -> putStrLn ("caught3: " ++ show (e::SomeException)) -- compensate for the fact that threadDelay is non-interruptible |