summaryrefslogtreecommitdiff
path: root/src/diagnostics/stray_equal_sign.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/diagnostics/stray_equal_sign.rs')
-rw-r--r--src/diagnostics/stray_equal_sign.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/diagnostics/stray_equal_sign.rs b/src/diagnostics/stray_equal_sign.rs
new file mode 100644
index 0000000..29674da
--- /dev/null
+++ b/src/diagnostics/stray_equal_sign.rs
@@ -0,0 +1,22 @@
+use miette::Diagnostic;
+use thiserror::Error;
+
+use crate::{diagnostics::AstDiagnostic, parse::Attribute, tokenize::Span};
+
+#[derive(Error, Debug, Diagnostic)]
+#[error("Stray equal sign found not attached to any attributes")]
+#[diagnostic(code(StrayEqualSign), severity(Error))]
+pub struct StrayEqualSign {
+ #[label(primary, "An equal sign is not a valid attribute")]
+ token: Span,
+}
+
+impl AstDiagnostic for StrayEqualSign {
+ fn handle_attribute(attribute: &crate::parse::Attribute<'_>) -> Option<Self> {
+ let Attribute::StrayEqualSign(token) = attribute else {
+ return None;
+ };
+
+ Some(Self { token: token.span })
+ }
+}