blob: e8fdb077643209ba03754e986f22c2e21b91c8b4 (
plain)
use miette::Diagnostic;
use thiserror::Error;
use crate::{
diagnostics::TokenDiagnostic,
tokenize::{Span, Token, TokenType},
};
#[derive(Error, Debug, Diagnostic)]
#[error("Tag names must be alphabetic")]
#[diagnostic(code(EmptyTagName), severity(Error))]
pub struct EmptyTagName {
#[label(primary, "all tags must have a name")]
tag: Span,
}
impl TokenDiagnostic for EmptyTagName {
fn handle_token(token: &Token<'_>) -> Option<Self> {
let TokenType::Tag {
lowercase_tag_name, ..
} = token.ty
else {
return None;
};
if !lowercase_tag_name.is_empty() {
return None;
}
Some(Self { tag: token.span })
}
}
|