packages feed

jsonnet-0.1.0.0: src/Language/Jsonnet/Error.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}

module Language.Jsonnet.Error where

import Data.Scientific (Scientific)
import Data.Text (Text)
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)

data ParserError
  = ParseError (ParseErrorBundle Text Void)
  | ImportError IOError (Maybe SrcSpan)
  deriving (Eq, Show)

data CheckError
  = DuplicateParam String
  | PosAfterNamedParam
  | DuplicateBinding String
  deriving (Show)