Commit c937f424 authored by Ben Gamari's avatar Ben Gamari 🐢

Add regression test for #11555

parent fc16690a
module Main(main) where
import Control.Monad
import Control.Exception
import Control.Monad.Trans.Cont
import GHC.Exts
type RAW a = ContT () IO a
-- See https://ghc.haskell.org/trac/ghc/ticket/11555
catchSafe1, catchSafe2 :: IO a -> (SomeException -> IO a) -> IO a
catchSafe1 a b = lazy a `catch` b
catchSafe2 a b = join (evaluate a) `catch` b
-- | Run and then call a continuation.
runRAW1, runRAW2 :: RAW a -> (Either SomeException a -> IO ()) -> IO ()
runRAW1 m k = m `runContT` (k . Right) `catchSafe1` \e -> k $ Left e
runRAW2 m k = m `runContT` (k . Right) `catchSafe2` \e -> k $ Left e
{-# NOINLINE run1 #-}
run1 :: RAW ()-> IO ()
run1 rs = do
runRAW1 rs $ \x -> case x of
Left e -> putStrLn "CAUGHT"
Right x -> return x
{-# NOINLINE run2 #-}
run2 :: RAW ()-> IO ()
run2 rs = do
runRAW2 rs $ \x -> case x of
Left e -> putStrLn "CAUGHT"
Right x -> return x
main :: IO ()
main = do
run1 $ error "MISSED"
run2 $ error "MISSED"
......@@ -11,3 +11,4 @@ test('T9254', normal, compile_and_run, [''])
test('T10148', normal, compile_and_run, [''])
test('T10218', normal, compile_and_run, [''])
test('T11076', normal, multimod_compile_and_run, ['T11076.hs', 'T11076_prim.cmm'])
test('T11555a', normal, 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