Skip to content

Commit

Permalink
Rollup merge of rust-lang#96589 - Badel2:source-callsite, r=michaelwo…
Browse files Browse the repository at this point in the history
…erister

Use source callsite in check_argument_types suggestion

This makes the "remove extra arguement" suggestion valid when the function argument is a macro.

Additionally, this may fix rust-lang#96225, but the only way I can reproduce that issue is using the playground, so we will need to wait until after this is merged to ensure it's fixed.
  • Loading branch information
GuillaumeGomez authored May 2, 2022
2 parents 23785c2 + 685f66b commit a0e2a37
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 1 deletion.
2 changes: 1 addition & 1 deletion compiler/rustc_typeck/src/check/fn_ctxt/checks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -980,7 +980,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
);
for (idx, arg) in matched_inputs.iter().enumerate() {
let suggestion_text = if let Some(arg) = arg {
let arg_span = provided_args[*arg].span;
let arg_span = provided_args[*arg].span.source_callsite();
let arg_text = source_map.span_to_snippet(arg_span).unwrap();
arg_text
} else {
Expand Down
9 changes: 9 additions & 0 deletions src/test/ui/typeck/remove-extra-argument.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// run-rustfix
// Check that the HELP suggestion is `l(vec![])` instead of `l($crate::vec::Vec::new())`
fn l(_a: Vec<u8>) {}

fn main() {
l(vec![])
//~^ ERROR this function takes 1 argument but 2 arguments were supplied
//~| HELP remove the extra argument
}
9 changes: 9 additions & 0 deletions src/test/ui/typeck/remove-extra-argument.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// run-rustfix
// Check that the HELP suggestion is `l(vec![])` instead of `l($crate::vec::Vec::new())`
fn l(_a: Vec<u8>) {}

fn main() {
l(vec![], vec![])
//~^ ERROR this function takes 1 argument but 2 arguments were supplied
//~| HELP remove the extra argument
}
19 changes: 19 additions & 0 deletions src/test/ui/typeck/remove-extra-argument.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
error[E0061]: this function takes 1 argument but 2 arguments were supplied
--> $DIR/remove-extra-argument.rs:6:5
|
LL | l(vec![], vec![])
| ^ ------ argument unexpected
|
note: function defined here
--> $DIR/remove-extra-argument.rs:3:4
|
LL | fn l(_a: Vec<u8>) {}
| ^ -----------
help: remove the extra argument
|
LL | l(vec![])
|

error: aborting due to previous error

For more information about this error, try `rustc --explain E0061`.

0 comments on commit a0e2a37

Please sign in to comment.