Skip to main content

camel_language_api/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum LanguageError {
5    #[error("parse error in expression `{expr}`: {reason}")]
6    ParseError { expr: String, reason: String },
7
8    #[error("evaluation error: {0}")]
9    EvalError(String),
10
11    #[error("unknown variable: {0}")]
12    UnknownVariable(String),
13
14    #[error("language `{0}` not found in registry")]
15    NotFound(String),
16
17    #[error("feature '{feature}' not supported by language '{language}'")]
18    NotSupported { feature: String, language: String },
19}
20
21impl LanguageError {
22    /// Create an `EvalError` that includes the expression being evaluated.
23    ///
24    /// This preserves the expression context in the error message for easier debugging.
25    pub fn eval_error(expr: &str, message: impl std::fmt::Display) -> Self {
26        LanguageError::EvalError(format!("in expression `{expr}`: {message}"))
27    }
28}