Thread varargs through r-a

This commit is contained in:
Jonas Schievink 2020-07-14 18:23:45 +02:00 committed by Jonas Schievink
parent 3f2ab436f4
commit a09d483802
11 changed files with 87 additions and 22 deletions

View file

@ -175,6 +175,10 @@ impl<'a, 'b> ExprValidator<'a, 'b> {
};
let sig = db.callable_item_signature(callee);
if sig.value.is_varargs {
return None;
}
let params = sig.value.params();
let mut param_count = params.len();
@ -512,4 +516,30 @@ impl Foo {
"#,
);
}
#[test]
fn varargs() {
check_diagnostics(
r#"
extern "C" {
fn fixed(fixed: u8);
fn varargs(fixed: u8, ...);
fn varargs2(...);
}
fn f() {
unsafe {
fixed(0);
fixed(0, 1);
//^^^^^^^^^^^ Expected 1 argument, found 2
varargs(0);
varargs(0, 1);
varargs2();
varargs2(0);
varargs2(0, 1);
}
}
"#,
)
}
}