mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Thread varargs through r-a
This commit is contained in:
parent
3f2ab436f4
commit
a09d483802
11 changed files with 87 additions and 22 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
"#,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue