content: {-|
  This module lists all of the exceptions thrown by 'llvm-hs' itself.
  Note that other exceptions can potentially be thrown
  by the underlying libraries, e.g., for functions doing file IO.
  -}
  module LLVM.Exception where
  
  import LLVM.Prelude
  
  import Control.Monad.Catch
  
  -- | Indicates an error during the translation of the AST provided by
  -- 'llvm-hs-pure' to LLVM’s internal representation.
  data EncodeException =
    EncodeException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception EncodeException
  
  -- | Indicates an error during the translation of LLVM’s internal representation
  -- to the AST provided 'llvm-hs-pure'.
  data DecodeException =
    DecodeException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception DecodeException
  
  -- | Indicates an error during the parsing of a module. This is used
  -- for errors encountered when parsing LLVM’s human readable assembly
  -- format and when parsing the binary bitcode format.
  data ParseFailureException =
    ParseFailureException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception ParseFailureException
  
  -- | Indicates an error during the linking of two modules.
  data LinkException =
    LinkException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception LinkException
  
  -- | Indicates an error during the creation of a
  -- <http://llvm.org/docs/doxygen/html/classllvm_1_1raw__fd__ostream.html raw_fd_ostream>.
  -- This could be caused by a nonexisting file path.
  data FdStreamException =
    FdStreamException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception FdStreamException
  
  -- | Indicates an error during a call to 'LLVM.Internal.Module.targetMachineEmit'.
  data TargetMachineEmitException =
    TargetMachineEmitException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception TargetMachineEmitException
  
  -- | Indicates a failure to find the target.
  data LookupTargetException =
    LookupTargetException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception LookupTargetException
  
  -- | Indicates an error during the verification of a module.
  data VerifyException =
    VerifyException !String
    deriving (Show, Eq, Ord, Typeable)
  
  instance Exception VerifyException
  