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}