kast_util/
error.rs

1use crate::source::Span;
2
3#[derive(Debug, thiserror::Error)]
4#[error("at {span} - {message}")]
5pub struct Error {
6    pub message: String,
7    pub span: Span,
8}
9
10#[derive(Debug, thiserror::Error)]
11#[error("{0}")]
12pub struct ErrorMessage(pub String);
13
14impl ErrorMessage {
15    pub fn at(self, span: Span) -> Error {
16        Error {
17            message: self.0,
18            span,
19        }
20    }
21}
22
23#[macro_export]
24macro_rules! error_fmt {
25    ($($f:tt)*) => {
26        ErrorMessage(format!($($f)*))
27    };
28}
29
30#[macro_export]
31macro_rules! error {
32    ($($f:tt)*) => {
33        Err(error_fmt!($($f)*))
34    };
35}