1
Fork 0

Rollup merge of #105965 - compiler-errors:issue-105896, r=cjgillot

Provide local extern function arg names

Fixes #105896
This commit is contained in:
Michael Goulet 2022-12-27 12:33:35 -08:00 committed by GitHub
commit 3fba7b4523
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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 { } else if let Node::TraitItem(&TraitItem {
kind: TraitItemKind::Fn(_, TraitFn::Required(idents)), kind: TraitItemKind::Fn(_, TraitFn::Required(idents)),
.. ..
})
| Node::ForeignItem(&ForeignItem {
kind: ForeignItemKind::Fn(_, idents, _),
..
}) = hir.get(hir_id) }) = hir.get(hir_id)
{ {
tcx.arena.alloc_slice(idents) idents
} else { } else {
span_bug!(hir.span(hir_id), "fn_arg_names: unexpected item {:?}", id); 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`.