{- | Module : Language.Jsonnet.Error Copyright : (c) 2020-2021 Alexandre Moreno SPDX-License-Identifier : BSD-3-Clause OR Apache-2.0 Maintainer : Alexandre Moreno Stability : experimental Portability : non-portable -} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} module Language.Jsonnet.Error where import Control.Exception import Data.Scientific (Scientific) import Data.Text (Text) import Data.Typeable (Typeable) import Data.Void (Void) import Language.Jsonnet.Common import Language.Jsonnet.Core import Language.Jsonnet.Parser.SrcSpan import Text.Megaparsec (ParseErrorBundle) import Text.PrettyPrint.ANSI.Leijen (Doc) data Error = ParserError ParserError | CheckError CheckError (Maybe SrcSpan) | EvalError EvalError (Backtrace Core) deriving (Show) data EvalError = TypeMismatch { expected :: Text, actual :: Text } | InvalidKey Doc | DuplicateKey Doc | NoSuchKey Doc | InvalidIndex Doc | IndexOutOfBounds Scientific | DivByZero | VarNotFound Doc | AssertionFailed Doc | TooManyArgs Int | ParamNotBound Doc | BadParam Doc | StdError Doc | RuntimeError Doc | ManifestError Doc deriving (Show, Typeable) instance Exception EvalError data ParserError = ParseError (ParseErrorBundle Text Void) | ImportError IOError (Maybe SrcSpan) deriving (Eq, Show) data CheckError = DuplicateParam String | PosAfterNamedParam | DuplicateBinding String deriving (Show)