Skip to content

Commit

Permalink
Rollup merge of #99483 - compiler-errors:issue-99482, r=jyn514
Browse files Browse the repository at this point in the history
Fix a numerical underflow in tuple wrap suggestion

Fixes #99482

I'm a clown, I rewrote the arg mismatch algo to use well-typed indices to avoid things like this, but then I added my own indexing bug, lol.
  • Loading branch information
Dylan-DPC authored Jul 20, 2022
2 parents fffc650 + 43c0c63 commit d9a71c1
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions compiler/rustc_typeck/src/check/fn_ctxt/checks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
// If so, we might have just forgotten to wrap some args in a tuple.
if let Some(ty::Tuple(tys)) =
formal_and_expected_inputs.get(mismatch_idx.into()).map(|tys| tys.1.kind())
// If the tuple is unit, we're not actually wrapping any arguments.
&& !tys.is_empty()
&& provided_arg_tys.len() == formal_and_expected_inputs.len() - 1 + tys.len()
{
// Wrap up the N provided arguments starting at this position in a tuple.
Expand Down
5 changes: 5 additions & 0 deletions src/test/ui/argument-suggestions/issue-99482.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fn main() {
let f = |_: (), f: fn()| f;
let _f = f(main);
//~^ ERROR this function takes 2 arguments but 1 argument was supplied
}
19 changes: 19 additions & 0 deletions src/test/ui/argument-suggestions/issue-99482.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
error[E0057]: this function takes 2 arguments but 1 argument was supplied
--> $DIR/issue-99482.rs:3:14
|
LL | let _f = f(main);
| ^ ---- an argument of type `()` is missing
|
note: closure defined here
--> $DIR/issue-99482.rs:2:13
|
LL | let f = |_: (), f: fn()| f;
| ^^^^^^^^^^^^^^^^
help: provide the argument
|
LL | let _f = f((), main);
| ~~~~~~~~~~~

error: aborting due to previous error

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

0 comments on commit d9a71c1

Please sign in to comment.