{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE DeriveDataTypeable #-}
module JSDOM.Custom.DOMError (
    module Generated
  , DOMErrorException(..)
  , throwDOMErrorException
) where

import Prelude ()
import Prelude.Compat
import Data.Typeable (Typeable)
import Control.Exception (Exception, throwIO)
import Control.Monad.IO.Class (MonadIO(..))

import JSDOM.Types (MonadDOM)
import JSDOM.Generated.DOMError as Generated

data DOMErrorException = DOMErrorException { DOMErrorException -> String
domErrorName :: String } deriving (Int -> DOMErrorException -> ShowS
[DOMErrorException] -> ShowS
DOMErrorException -> String
(Int -> DOMErrorException -> ShowS)
-> (DOMErrorException -> String)
-> ([DOMErrorException] -> ShowS)
-> Show DOMErrorException
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DOMErrorException] -> ShowS
$cshowList :: [DOMErrorException] -> ShowS
show :: DOMErrorException -> String
$cshow :: DOMErrorException -> String
showsPrec :: Int -> DOMErrorException -> ShowS
$cshowsPrec :: Int -> DOMErrorException -> ShowS
Show, DOMErrorException -> DOMErrorException -> Bool
(DOMErrorException -> DOMErrorException -> Bool)
-> (DOMErrorException -> DOMErrorException -> Bool)
-> Eq DOMErrorException
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DOMErrorException -> DOMErrorException -> Bool
$c/= :: DOMErrorException -> DOMErrorException -> Bool
== :: DOMErrorException -> DOMErrorException -> Bool
$c== :: DOMErrorException -> DOMErrorException -> Bool
Eq, Typeable)

instance Exception DOMErrorException

throwDOMErrorException :: MonadDOM m => DOMError -> m a
throwDOMErrorException :: DOMError -> m a
throwDOMErrorException DOMError
error = do
    String
domErrorName <- DOMError -> m String
forall (m :: * -> *) self result.
(MonadDOM m, IsDOMError self, FromJSString result) =>
self -> m result
getName DOMError
error
    IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO a -> m a) -> IO a -> m a
forall a b. (a -> b) -> a -> b
$ DOMErrorException -> IO a
forall e a. Exception e => e -> IO a
throwIO DOMErrorException :: String -> DOMErrorException
DOMErrorException{String
domErrorName :: String
domErrorName :: String
..}