Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/malformed_derive.rs')
| -rw-r--r-- | crates/ide-diagnostics/src/handlers/malformed_derive.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/malformed_derive.rs b/crates/ide-diagnostics/src/handlers/malformed_derive.rs new file mode 100644 index 0000000000..cd48bdba07 --- /dev/null +++ b/crates/ide-diagnostics/src/handlers/malformed_derive.rs @@ -0,0 +1,37 @@ +use crate::{Diagnostic, DiagnosticsContext, Severity}; + +// Diagnostic: malformed-derive +// +// This diagnostic is shown when the derive attribute has invalid input. +pub(crate) fn malformed_derive( + ctx: &DiagnosticsContext<'_>, + d: &hir::MalformedDerive, +) -> Diagnostic { + let display_range = ctx.sema.diagnostics_display_range(d.node.clone()).range; + + Diagnostic::new( + "malformed-derive", + "malformed derive input, derive attributes are of the form `#[derive(Derive1, Derive2, ...)]`", + display_range, + ) + .severity(Severity::Error) +} + +#[cfg(test)] +mod tests { + use crate::tests::check_diagnostics; + + #[test] + fn invalid_input() { + check_diagnostics( + r#" +//- minicore:derive +mod __ { + #[derive = "aaaa"] + //^^^^^^^^^^^^^^^^^^ error: malformed derive input, derive attributes are of the form `#[derive(Derive1, Derive2, ...)]` + struct Foo; +} + "#, + ); + } +} |