Change the return type of exitImmediately
authorErik de Castro Lopo <erikd@mega-nerd.com>
Sat, 4 May 2019 00:25:39 +0000 (10:25 +1000)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sun, 5 May 2019 10:26:37 +0000 (12:26 +0200)
New type is: exitImmediately :: ExitCode -> IO a

Closes: https://github.com/haskell/unix/issues/126

System/Posix/Process/Common.hsc

index 7fb0823..31ff926 100644 (file)
@@ -383,9 +383,14 @@ readWaitStatus wstatp = do
 
 -- | @'exitImmediately' status@ calls @_exit@ to terminate the process
 --   with the indicated exit @status@.
---   The operation never returns.
-exitImmediately :: ExitCode -> IO ()
-exitImmediately exitcode = c_exit (exitcode2Int exitcode)
+--   The operation never returns. Since it does not use the Haskell exception
+--   system and it cannot be caught.
+exitImmediately :: ExitCode -> IO a
+exitImmediately status = do
+    _ <- c_exit (exitcode2Int status)
+    -- The above will exit the program, but need the following to satisfy
+    -- the type signature.
+    exitImmediately status
   where
     exitcode2Int ExitSuccess = 0
     exitcode2Int (ExitFailure n) = fromIntegral n