Commit 27dd2c46 authored by Simon Marlow's avatar Simon Marlow
Browse files

add test for #3279 and #3288

parent d4528e72
-- test for #3279
import System.IO.Unsafe
import GHC.Conc
import Control.Exception
import Prelude hiding (catch)
f :: Int
f = (1 +) . unsafePerformIO $ do
error "foo" `catch` \(SomeException e) -> do
myThreadId >>= flip throwTo e
-- point X
unblock $ return 1
main :: IO ()
main = do
evaluate f `catch` \(SomeException e) -> return 0
-- the evaluation of 'x' is now suspended at point X
tid <- block $ forkIO (evaluate f >> return ())
killThread tid
-- now execute the 'unblock' above with a pending exception
yield
-- should print 1 + 1 = 2
print f
......@@ -23,6 +23,7 @@ test('conc070', only_ways(threaded_ways), compile_and_run, [''])
test('1980', normal, compile_and_run, [''])
test('2910', normal, compile_and_run, [''])
test('3279', normal, compile_and_run, [''])
# -----------------------------------------------------------------------------
# These tests we only do for a full run
......@@ -151,4 +152,3 @@ test('conc065', ignore_output, compile_and_run, [''])
test('conc066', ignore_output, compile_and_run, [''])
test('conc067', ignore_output, compile_and_run, [''])
test('conc068', exit_code(1), compile_and_run, [''])
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment