Skip to main content

mical_cli_syntax/
syntax_error.rs

1use rowan::TextRange;
2use std::{borrow::Cow, fmt};
3
4#[derive(Clone, Debug, PartialEq, Eq, Hash)]
5pub struct SyntaxError {
6    message: Cow<'static, str>,
7    range: TextRange,
8}
9
10impl SyntaxError {
11    pub fn new(message: impl Into<Cow<'static, str>>, range: TextRange) -> Self {
12        Self { message: message.into(), range }
13    }
14
15    pub fn message(&self) -> &str {
16        &self.message
17    }
18
19    pub fn range(&self) -> TextRange {
20        self.range
21    }
22}
23
24impl fmt::Display for SyntaxError {
25    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26        writeln!(f, "{:?}: {}", self.range, &self.message)
27    }
28}