blob: b20cb839a364de6b3c8383ea69ef247b460d6050 (
plain)
use miette::Diagnostic;
use thiserror::Error;
use crate::{diagnostics::AstDiagnostic, parse::Attribute, tokenize::Span};
#[derive(Error, Debug, Diagnostic)]
#[error("Multiple equal signs in a row")]
#[diagnostic(code(TooManyEqualSigns), severity(Error))]
pub struct TooManyEqualSigns {
#[label(primary, "only one equal sign should be present")]
token: Span,
}
impl AstDiagnostic for TooManyEqualSigns {
fn handle_attribute(attribute: &crate::parse::Attribute<'_>) -> Option<Self> {
let Attribute::NamedArgumentWithTooManyEqualSigns { equal_signs, .. } = attribute else {
return None;
};
Some(Self {
token: Span {
start: equal_signs
.first()
.expect("at least two equal signs")
.span
.start,
end: equal_signs
.last()
.expect("at least two equal signs")
.span
.end,
},
})
}
}
|