{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
-----------------------------------------------------------------------------
--
-- Module      :  Language.Javascript.JSaddle.Exception
-- Copyright   :  (c) Hamish Mackenzie
-- License     :  MIT
--
-- Maintainer  :  Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
--
-- |
--
-----------------------------------------------------------------------------

module Language.Javascript.JSaddle.Exception (
    JSException(..)
--  , rethrow
) where

import qualified Control.Exception as E (Exception)
#ifdef ghcjs_HOST_OS
import GHCJS.Prim (JSVal)
#else
import GHCJS.Prim.Internal (JSVal)
#endif
import Data.Typeable (Typeable)

newtype JSException = JSException JSVal deriving (Typeable)

-- | JavaScript exception
-- >>>
instance Show JSException where show _ = "JSException"
instance E.Exception JSException

---- | Catch JavaScript exceptions and rethrow Haskell ones
--rethrow :: (MutableJSArray -> JSM a) -> JSM a
--rethrow f = f `catchval` \e ->
--    liftIO . E.throwIO $ JSException e