Provide local extern function arg names

This commit is contained in:
Michael Goulet 2022-12-27 17:10:21 +00:00
parent b38a6d373c
commit e5c159cf90
3 changed files with 40 additions and 1 deletions

View File

@ -160,9 +160,13 @@ pub fn provide(providers: &mut Providers) {
} else if let Node::TraitItem(&TraitItem {
kind: TraitItemKind::Fn(_, TraitFn::Required(idents)),
..
})
| Node::ForeignItem(&ForeignItem {
kind: ForeignItemKind::Fn(_, idents, _),
..
}) = hir.get(hir_id)
{
tcx.arena.alloc_slice(idents)
idents
} else {
span_bug!(hir.span(hir_id), "fn_arg_names: unexpected item {:?}", id);
}

View File

@ -0,0 +1,9 @@
extern "Rust" {
fn dstfn(src: i32, dst: err);
//~^ ERROR cannot find type `err` in this scope
}
fn main() {
dstfn(1);
//~^ ERROR this function takes 2 arguments but 1 argument was supplied
}

View File

@ -0,0 +1,26 @@
error[E0412]: cannot find type `err` in this scope
--> $DIR/extern-fn-arg-names.rs:2:29
|
LL | fn dstfn(src: i32, dst: err);
| ^^^ not found in this scope
error[E0061]: this function takes 2 arguments but 1 argument was supplied
--> $DIR/extern-fn-arg-names.rs:7:5
|
LL | dstfn(1);
| ^^^^^--- an argument is missing
|
note: function defined here
--> $DIR/extern-fn-arg-names.rs:2:8
|
LL | fn dstfn(src: i32, dst: err);
| ^^^^^
help: provide the argument
|
LL | dstfn(1, /* dst */);
| ~~~~~~~~~~~~~~
error: aborting due to 2 previous errors
Some errors have detailed explanations: E0061, E0412.
For more information about an error, try `rustc --explain E0061`.