#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Error {
InvalidIdentifier {
attempted: String,
reason: &'static str,
},
EmptyRegexPattern,
InvalidRegexFlag {
flag: char,
},
UnbalancedTemplate {
quasis: usize,
expressions: usize,
},
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::InvalidIdentifier { attempted, reason } => {
write!(f, "invalid identifier {attempted:?}: {reason}")
}
Self::EmptyRegexPattern => f.write_str("regex literal pattern is empty"),
Self::InvalidRegexFlag { flag } => {
write!(f, "invalid regex flag {flag:?}")
}
Self::UnbalancedTemplate {
quasis,
expressions,
} => write!(
f,
"unbalanced template literal: {quasis} quasis and {expressions} expressions (must satisfy quasis == expressions + 1)"
),
}
}
}
impl std::error::Error for Error {}