Skip to content

Commit 05e8a1e

Browse files
committed
Support operations on ExitCode
1 parent effe6b7 commit 05e8a1e

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
@@ -937,6 +938,9 @@ supportedLits = Map.fromList [
937938
("Process.setEnv", lit' $ Process.setEnv @() @() @() . map (bimap Text.unpack Text.unpack)),
938939
("Process.runProcess", lit' $ runProcess @IO @() @() @()),
939940
("Process.runProcess_", lit' $ runProcess_ @IO @() @() @()),
941+
-- Exit
942+
("Exit.ExitSuccess", lit' Exit.ExitSuccess),
943+
("Exit.ExitFailure", lit' Exit.ExitFailure),
940944
-- Lists
941945
("List.and", lit' (List.and @[])),
942946
("List.or", lit' (List.or @[])),
@@ -1100,6 +1104,10 @@ polyLits = Map.fromList
11001104
"Tuple.(,)" (,) :: forall a b. a -> b -> (a,b)
11011105
"Tuple.(,,)" (,,) :: forall a b c. a -> b -> c -> (a,b,c)
11021106
"Tuple.(,,,)" (,,,) :: forall a b c d. a -> b -> c -> d -> (a,b,c,d)
1107+
-- Exit
1108+
"Exit.die" Exit.die :: forall a. String -> IO a
1109+
"Exit.exitWith" Exit.exitWith :: forall a. ExitCode -> IO a
1110+
"Exit.exitCode" exit_exitCode :: forall a. a -> (Int -> a) -> ExitCode -> a
11031111
-- Exceptions
11041112
"Error.error" (error . Text.unpack) :: forall a. Text -> a
11051113
-- Bool
@@ -1239,6 +1247,14 @@ unsafeGetForall key l = Maybe.fromMaybe (error $ "Bad compile-time lookup for "
12391247
(forall', vars, irep, _) <- Map.lookup key polyLits
12401248
pure (UForall l () [] forall' vars irep [])
12411249

1250+
--------------------------------------------------------------------------------
1251+
-- Accessor for ExitCode
1252+
1253+
exit_exitCode :: a -> (Int -> a) -> ExitCode -> a
1254+
exit_exitCode ok fail' = \case
1255+
ExitSuccess -> ok
1256+
ExitFailure i -> fail' i
1257+
12421258
--------------------------------------------------------------------------------
12431259
-- UTF-8 specific operations without all the environment gubbins
12441260
--

0 commit comments

Comments
 (0)