haloumi_lowering/
error.rs

1//! Error type.
2
3use thiserror::Error;
4
5/// Lowering error type.
6#[derive(Error, Debug)]
7pub enum Error {
8    /// Happens when [`Lowering::checked_generate_constraint`](crate::Lowering::checked_generate_constraint) fails
9    /// because the constraint was not generated.
10    #[error("Last constraint was not generated!")]
11    LastConstraintNotGenerated,
12    /// Error emitted by implementations of [`LowerableStmt`](crate::lowerable::LowerableStmt) or
13    /// [`LowerableExpr`](crate::lowerable::LowerableExpr).
14    ///
15    /// Use [`lowering_err!`] to easily create this kind of error.
16    #[error("Lowering error")]
17    Lowering(Box<dyn std::error::Error>),
18}
19
20/// Convenience macro for creating [`Error::Lowering`] type of errors.
21#[macro_export]
22macro_rules! lowering_err {
23    ($err:expr) => {
24        $crate::error::Error::Lowering(Box::new($err))
25    };
26}