Skip to content

Commit aa9f590

Browse files
committed
Support operations on ExitCode
1 parent ff17f10 commit aa9f590

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/Hell.hs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import qualified Language.Haskell.TH as TH
2929
import qualified Language.Haskell.TH.Syntax as TH
3030
import Language.Haskell.TH (Q)
3131

32+
import qualified System.Exit as Exit
3233
import qualified Data.Graph as Graph
3334
import qualified Data.Eq as Eq
3435
import qualified Data.Either as Either
@@ -942,6 +943,9 @@ supportedLits = Map.fromList [
942943
("Process.setEnv", lit' $ Process.setEnv @() @() @() . map (bimap Text.unpack Text.unpack)),
943944
("Process.runProcess", lit' $ runProcess @IO @() @() @()),
944945
("Process.runProcess_", lit' $ runProcess_ @IO @() @() @()),
946+
-- Exit
947+
("Exit.ExitSuccess", lit' Exit.ExitSuccess),
948+
("Exit.ExitFailure", lit' Exit.ExitFailure),
945949
-- Lists
946950
("List.and", lit' (List.and @[])),
947951
("List.or", lit' (List.or @[])),
@@ -1105,6 +1109,10 @@ polyLits = Map.fromList
11051109
"Tuple.(,)" (,) :: forall a b. a -> b -> (a,b)
11061110
"Tuple.(,,)" (,,) :: forall a b c. a -> b -> c -> (a,b,c)
11071111
"Tuple.(,,,)" (,,,) :: forall a b c d. a -> b -> c -> d -> (a,b,c,d)
1112+
-- Exit
1113+
"Exit.die" Exit.die :: forall a. String -> IO a
1114+
"Exit.exitWith" Exit.exitWith :: forall a. ExitCode -> IO a
1115+
"Exit.exitCode" exit_exitCode :: forall a. a -> (Int -> a) -> ExitCode -> a
11081116
-- Exceptions
11091117
"Error.error" (error . Text.unpack) :: forall a. Text -> a
11101118
-- Bool
@@ -1244,6 +1252,14 @@ unsafeGetForall key l = Maybe.fromMaybe (error $ "Bad compile-time lookup for "
12441252
(forall', vars, irep, _) <- Map.lookup key polyLits
12451253
pure (UForall l () [] forall' vars irep [])
12461254

1255+
--------------------------------------------------------------------------------
1256+
-- Accessor for ExitCode
1257+
1258+
exit_exitCode :: a -> (Int -> a) -> ExitCode -> a
1259+
exit_exitCode ok fail' = \case
1260+
ExitSuccess -> ok
1261+
ExitFailure i -> fail' i
1262+
12471263
--------------------------------------------------------------------------------
12481264
-- UTF-8 specific operations without all the environment gubbins
12491265
--

0 commit comments

Comments
 (0)