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 { let TokenType::Tag { lowercase_tag_name, .. } = token.ty else { return None; }; if !lowercase_tag_name.is_empty() { return None; } Some(Self { tag: token.span }) } }