toasty_core/error/
expression_evaluation_failed.rs

1use super::Error;
2
3/// Error when expression evaluation fails.
4///
5/// This occurs when:
6/// - An expression cannot be evaluated in the current context (DEFAULT, WITH clauses)
7/// - Required data is missing (unresolved references or arguments)
8/// - Type mismatches during evaluation (expected string, got something else)
9/// - Expression evaluation is attempted on non-evaluable constructs
10///
11/// These are runtime evaluation failures, not syntax errors.
12#[derive(Debug)]
13pub(super) struct ExpressionEvaluationFailed {
14    message: Box<str>,
15}
16
17impl std::error::Error for ExpressionEvaluationFailed {}
18
19impl core::fmt::Display for ExpressionEvaluationFailed {
20    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
21        write!(f, "expression evaluation failed: {}", self.message)
22    }
23}
24
25impl Error {
26    /// Creates an expression evaluation failed error.
27    ///
28    /// This is used when expression evaluation fails at runtime due to:
29    /// - Missing context or data
30    /// - Type mismatches
31    /// - Non-evaluable constructs
32    ///
33    /// # Examples
34    ///
35    /// ```
36    /// use toasty_core::Error;
37    ///
38    /// let err = Error::expression_evaluation_failed("unresolved reference");
39    /// assert!(err.is_expression_evaluation_failed());
40    /// ```
41    pub fn expression_evaluation_failed(message: impl Into<String>) -> Error {
42        Error::from(super::ErrorKind::ExpressionEvaluationFailed(
43            ExpressionEvaluationFailed {
44                message: message.into().into(),
45            },
46        ))
47    }
48
49    /// Returns `true` if this error is an expression evaluation failure.
50    pub fn is_expression_evaluation_failed(&self) -> bool {
51        matches!(self.kind(), super::ErrorKind::ExpressionEvaluationFailed(_))
52    }
53}