use miette::Diagnostic; use thiserror::Error; use crate::{ diagnostics::AstDiagnostic, tokenize::{Span, TokenType}, }; #[derive(Error, Debug, Diagnostic)] #[error("html tags is not allowed in kuht")] #[diagnostic(code(HtmlTag), severity(Error))] pub struct HtmlTag { #[label(primary, "invalid html tag")] tag: Span, } impl AstDiagnostic for HtmlTag { fn handle_element(element: &crate::parse::Element<'_>) -> Option { let TokenType::Tag { lowercase_tag_name, .. } = element.start_tag.ty else { return None; }; if lowercase_tag_name != "html" { return None; } Some(Self { tag: element.start_tag.span, }) } }