use ide_db::Severity; use crate::{Diagnostic, DiagnosticCode, DiagnosticsContext}; // Diagnostic: bad-rtn // // This diagnostic is shown when a RTN (Return Type Notation, `Type::method(..): Send`) is written in an improper place. pub(crate) fn bad_rtn(ctx: &DiagnosticsContext<'_>, d: &hir::BadRtn) -> Diagnostic { Diagnostic::new_with_syntax_node_ptr( ctx, DiagnosticCode::Ra("bad-rtn", Severity::Error), "return type notation not allowed in this position yet", d.rtn.map(Into::into), ) .stable() } #[cfg(test)] mod tests { use crate::tests::check_diagnostics; #[test] fn fn_traits_also_emit() { check_diagnostics( r#" //- minicore: fn fn foo< A: Fn(..), // ^^^^ error: return type notation not allowed in this position yet >() {} "#, ); } #[test] fn bad_rtn() { check_diagnostics( r#" mod module { pub struct Type; } trait Trait {} fn foo() where module(..)::Type: Trait // ^^^^ error: return type notation not allowed in this position yet { } "#, ); } }