simple_expressions/types/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum Error {
5    #[error("unable to resolve variable: {0:?}")]
6    ResolveFailed(String),
7    #[error("variable is not callable")]
8    NotCallable,
9    #[error("type mismatch: {0}")]
10    TypeMismatch(String),
11    #[error("divide by zero")]
12    DivideByZero,
13    #[error("evaluation failed: {0}")]
14    EvaluationFailed(String),
15    #[error("index out of bounds: {index} (len: {len})")]
16    IndexOutOfBounds { index: i64, len: usize },
17    #[error("{target}: {message}")]
18    WrongIndexType { target: &'static str, message: String },
19    #[error("not a dict")]
20    NotADict,
21    #[error("not indexable: {0}")]
22    NotIndexable(String),
23    #[error("no such key: {0}")]
24    NoSuchKey(String),
25    #[error("unknown member '{member}' for type {type_name}")]
26    UnknownMember { type_name: String, member: String },
27    #[error("parse error: {0}")]
28    ParseError(String),
29    #[error("internal parse error: {0}")]
30    InternalParserError(String),
31}
32
33pub type Result<T> = core::result::Result<T, Error>;