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}