module Vulkan.Utils.Internal where
import Control.Monad.IO.Class
import GHC.IO ( throwIO )
import GHC.IO.Exception ( IOErrorType(..)
, IOException(..)
)
import System.IO ( hPutStrLn
, stderr
)
import Language.Haskell.TH.Quote
unsatisfiedConstraints :: String -> IO a
unsatisfiedConstraints :: forall a. String -> IO a
unsatisfiedConstraints String
message =
forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
UnsatisfiedConstraints String
"" String
message forall a. Maybe a
Nothing forall a. Maybe a
Nothing
noSuchThing :: String -> IO a
noSuchThing :: forall a. String -> IO a
noSuchThing String
message =
forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
NoSuchThing String
"" String
message forall a. Maybe a
Nothing forall a. Maybe a
Nothing
sayErr :: MonadIO m => String -> m ()
sayErr :: forall (m :: * -> *). MonadIO m => String -> m ()
sayErr = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> String -> IO ()
hPutStrLn Handle
stderr
badQQ :: String -> QuasiQuoter
badQQ :: String -> QuasiQuoter
badQQ String
name = (String -> Q Exp)
-> (String -> Q Pat)
-> (String -> Q Type)
-> (String -> Q [Dec])
-> QuasiQuoter
QuasiQuoter (forall a. String -> a
bad String
"expression")
(forall a. String -> a
bad String
"pattern")
(forall a. String -> a
bad String
"type")
(forall a. String -> a
bad String
"declaration")
where
bad :: String -> a
bad :: forall a. String -> a
bad String
context =
forall a. HasCallStack => String -> a
error forall a b. (a -> b) -> a -> b
$ String
"Can't use " forall a. Semigroup a => a -> a -> a
<> String
name forall a. Semigroup a => a -> a -> a
<> String
" quote in a " forall a. Semigroup a => a -> a -> a
<> String
context forall a. Semigroup a => a -> a -> a
<> String
" context"