Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs b/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs
index f6293e35d0..d1c3d1c5df 100644
--- a/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs
+++ b/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs
@@ -355,6 +355,30 @@ fn f() {
}
#[test]
+ fn varargs_fn_pointer() {
+ check_diagnostics(
+ r#"
+struct Funcs {
+ f: unsafe extern "C" fn(u8, u8, ...) -> i32,
+ g: unsafe extern "C" fn(...) -> i32,
+}
+
+fn f(funcs: Funcs) {
+ unsafe {
+ (funcs.f)(0, 1);
+ (funcs.f)(0, 1, 2);
+ (funcs.f)(0);
+ //^ error: expected 2 arguments, found 1
+ (funcs.g)();
+ (funcs.g)(0);
+ (funcs.g)(0, 1);
+ }
+}
+ "#,
+ )
+ }
+
+ #[test]
fn arg_count_lambda() {
check_diagnostics(
r#"