language-ninja-0.1.0: library/Language/Ninja/Errors.hs
-- -*- coding: utf-8; mode: haskell; -*-
-- File: library/Language/Ninja/Errors.hs
--
-- License:
-- Copyright 2017 Awake Security
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-- |
-- Module : Language.Ninja.Errors
-- Copyright : Copyright 2017 Awake Security
-- License : Apache-2.0
-- Maintainer : opensource@awakesecurity.com
-- Stability : experimental
--
-- This module re-exports all of the modules under the "Language.Ninja.Errors"
-- namespace for convenience.
--
-- It is recommended that you import it with the following style:
--
-- > import qualified Language.Ninja.Errors as Errors
--
-- @since 0.1.0
module Language.Ninja.Errors
( -- * "Language.Ninja.Errors"
NinjaError (..)
, throwNinjaError
, throwGenericNinjaError
, throwNinjaParseError
, throwNinjaCompileError
-- * "Language.Ninja.Errors.Compile"
, CompileError (..)
, throwCompileError
, throwGenericCompileError
, CompileMetaError (..)
, throwCompileMetaError
, throwGenericCompileMetaError
, throwVersionParseFailure
, CompilePhonyError (..)
, throwCompilePhonyError
, throwGenericCompilePhonyError
, CompileDefaultError (..)
, throwCompileDefaultError
, throwGenericCompileDefaultError
, CompileBuildError (..)
, throwCompileBuildError
, throwGenericCompileBuildError
, throwBuildRuleNotFound
, CompileRuleError (..)
, throwCompileRuleError
, throwGenericCompileRuleError
, throwRuleLookupFailure
, throwUnknownDeps
, throwUnexpectedMSVCPrefix
, CompilePoolError (..)
, throwCompilePoolError
, throwGenericCompilePoolError
, throwInvalidPoolDepth
, throwEmptyPoolName
-- * "Language.Ninja.Errors.Parser"
, ParseError (..)
, throwParseError
, throwGenericParseError
, throwLexBindingFailure
, throwLexExpectedColon
, throwLexUnexpectedDollar
, throwLexUnexpectedSeparator
, throwLexParsecError
, throwParseBadDepthField
, throwParseUnexpectedBinding
) where
import Language.Ninja.Errors.Compile
import Language.Ninja.Errors.Parser
import Control.Exception (Exception)
import Control.Monad.Error.Class (MonadError (..))
import Data.Text (Text)
import GHC.Generics (Generic)
--------------------------------------------------------------------------------
-- | This type subsumes any error that can be thrown during execution of a
-- function defined in @language-ninja@.
--
-- @since 0.1.0
data NinjaError
= -- | Generic catch-all error constructor. Avoid using this.
--
-- @since 0.1.0
GenericNinjaError !Text
| -- | Errors encountered during parsing.
--
-- @since 0.1.0
NinjaParseError !ParseError
| -- | Errors encountered during compilation.
--
-- @since 0.1.0
NinjaCompileError !CompileError
deriving (Eq, Show, Generic)
instance Exception NinjaError
-- | Throw a 'NinjaError'.
--
-- @since 0.1.0
throwNinjaError :: (MonadError NinjaError m) => NinjaError -> m a
throwNinjaError = throwError
-- | Throw a generic catch-all 'NinjaError'.
--
-- @since 0.1.0
throwGenericNinjaError :: (MonadError NinjaError m) => Text -> m a
throwGenericNinjaError msg = throwNinjaError (GenericNinjaError msg)
-- | Throw a 'ParseError'.
--
-- @since 0.1.0
throwNinjaParseError :: (MonadError NinjaError m) => ParseError -> m a
throwNinjaParseError e = throwNinjaError (NinjaParseError e)
-- | Throw a 'CompileError'.
--
-- @since 0.1.0
throwNinjaCompileError :: (MonadError NinjaError m) => CompileError -> m a
throwNinjaCompileError e = throwNinjaError (NinjaCompileError e)
--------------------------------------------------------------------------------