{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeApplications #-}
module What4.Internal
( assertionsEnabled
) where
import qualified Control.Exception as X
import Data.Functor ((<&>))
assertionsEnabled :: IO Bool
assertionsEnabled :: IO Bool
assertionsEnabled = do
forall e a. Exception e => IO a -> IO (Either e a)
X.try @X.AssertionFailed (Bool -> IO () -> IO ()
forall a. (?callStack::CallStack) => Bool -> a -> a
X.assert Bool
False (() -> IO ()
forall a. a -> IO a
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ())) IO (Either AssertionFailed ())
-> (Either AssertionFailed () -> Bool) -> IO Bool
forall (f :: Type -> Type) a b. Functor f => f a -> (a -> b) -> f b
<&>
\case
Left AssertionFailed
_ -> Bool
True
Right () -> Bool
False