| use hir::HirDisplay; |
| |
| use crate::{Diagnostic, DiagnosticCode, DiagnosticsContext}; |
| |
| // Diagnostic: expected-function |
| // |
| // This diagnostic is triggered if a call is made on something that is not callable. |
| pub(crate) fn expected_function( |
| ctx: &DiagnosticsContext<'_>, |
| d: &hir::ExpectedFunction, |
| ) -> Diagnostic { |
| Diagnostic::new_with_syntax_node_ptr( |
| ctx, |
| DiagnosticCode::RustcHardError("E0618"), |
| format!("expected function, found {}", d.found.display(ctx.sema.db)), |
| d.call.clone().map(|it| it.into()), |
| ) |
| .experimental() |
| } |
| |
| #[cfg(test)] |
| mod tests { |
| use crate::tests::check_diagnostics; |
| |
| #[test] |
| fn smoke_test() { |
| check_diagnostics( |
| r#" |
| fn foo() { |
| let x = 3; |
| x(); |
| // ^^^ error: expected function, found i32 |
| ""(); |
| // ^^^^ error: expected function, found &str |
| foo(); |
| } |
| "#, |
| ); |
| } |
| } |