diff options
| -rw-r--r-- | compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs | 28 | ||||
| -rw-r--r-- | tests/ui/argument-suggestions/issue-97484.stderr | 2 | ||||
| -rw-r--r-- | tests/ui/argument-suggestions/mixed_cases.stderr | 11 | ||||
| -rw-r--r-- | tests/ui/mismatched_types/overloaded-calls-bad.stderr | 11 | ||||
| -rw-r--r-- | tests/ui/suggestions/args-instead-of-tuple-errors.stderr | 20 | ||||
| -rw-r--r-- | tests/ui/tuple/wrong_argument_ice-3.stderr | 10 |
6 files changed, 35 insertions, 47 deletions
diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 005225b665c..6d164d1c2b2 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -1135,20 +1135,20 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - // Incorporate the argument changes in the removal suggestion. - let mut prev = -1; - for (expected_idx, provided_idx) in matched_inputs.iter_enumerated() { - if let Some(provided_idx) = provided_idx { - prev = provided_idx.index() as i64; - } - let idx = ProvidedIdx::from_usize((prev + 1) as usize); - if let None = provided_idx - && let Some((_, arg_span)) = provided_arg_tys.get(idx) - { - let (_, expected_ty) = formal_and_expected_inputs[expected_idx]; - suggestions.push((*arg_span, ty_to_snippet(expected_ty, expected_idx))); - } - } + // // Incorporate the argument changes in the removal suggestion. + // let mut prev = -1; + // for (expected_idx, provided_idx) in matched_inputs.iter_enumerated() { + // if let Some(provided_idx) = provided_idx { + // prev = provided_idx.index() as i64; + // } + // let idx = ProvidedIdx::from_usize((prev + 1) as usize); + // if let None = provided_idx + // && let Some((_, arg_span)) = provided_arg_tys.get(idx) + // { + // let (_, expected_ty) = formal_and_expected_inputs[expected_idx]; + // suggestions.push((*arg_span, ty_to_snippet(expected_ty, expected_idx))); + // } + // } // If we have less than 5 things to say, it would be useful to call out exactly what's wrong if labels.len() <= 5 { diff --git a/tests/ui/argument-suggestions/issue-97484.stderr b/tests/ui/argument-suggestions/issue-97484.stderr index a86cbbf1802..2c2797b3911 100644 --- a/tests/ui/argument-suggestions/issue-97484.stderr +++ b/tests/ui/argument-suggestions/issue-97484.stderr @@ -20,7 +20,7 @@ LL | foo(&&A, B, C, D, &E, F, G); help: remove the extra arguments | LL - foo(&&A, B, C, D, E, F, G); -LL + foo(&&A, D, /* &E */, G); +LL + foo(&&A, D, E, G); | error: aborting due to previous error diff --git a/tests/ui/argument-suggestions/mixed_cases.stderr b/tests/ui/argument-suggestions/mixed_cases.stderr index c645dd38179..cfa5702ab7f 100644 --- a/tests/ui/argument-suggestions/mixed_cases.stderr +++ b/tests/ui/argument-suggestions/mixed_cases.stderr @@ -2,8 +2,10 @@ error[E0061]: this function takes 2 arguments but 3 arguments were supplied --> $DIR/mixed_cases.rs:10:3 | LL | two_args(1, "", X {}); - | ^^^^^^^^ -- ---- unexpected argument of type `X` - | | + | ^^^^^^^^ -------- + | | | | + | | | unexpected argument of type `X` + | | help: remove the extra argument | expected `f32`, found `&str` | note: function defined here @@ -11,11 +13,6 @@ note: function defined here | LL | fn two_args(_a: i32, _b: f32) {} | ^^^^^^^^ ------- ------- -help: remove the extra argument - | -LL - two_args(1, "", X {}); -LL + two_args(1, /* f32 */); - | error[E0061]: this function takes 3 arguments but 4 arguments were supplied --> $DIR/mixed_cases.rs:11:3 diff --git a/tests/ui/mismatched_types/overloaded-calls-bad.stderr b/tests/ui/mismatched_types/overloaded-calls-bad.stderr index cd483e7ad2c..8032aa32b4f 100644 --- a/tests/ui/mismatched_types/overloaded-calls-bad.stderr +++ b/tests/ui/mismatched_types/overloaded-calls-bad.stderr @@ -32,8 +32,10 @@ error[E0057]: this function takes 1 argument but 2 arguments were supplied --> $DIR/overloaded-calls-bad.rs:37:15 | LL | let ans = s("burma", "shave"); - | ^ ------- ------- unexpected argument of type `&'static str` - | | + | ^ ---------------- + | | | | + | | | unexpected argument of type `&'static str` + | | help: remove the extra argument | expected `isize`, found `&str` | note: implementation defined here @@ -41,11 +43,6 @@ note: implementation defined here | LL | impl FnMut<(isize,)> for S { | ^^^^^^^^^^^^^^^^^^^^^^^^^^ -help: remove the extra argument - | -LL - let ans = s("burma", "shave"); -LL + let ans = s(/* isize */); - | error[E0308]: mismatched types --> $DIR/overloaded-calls-bad.rs:40:7 diff --git a/tests/ui/suggestions/args-instead-of-tuple-errors.stderr b/tests/ui/suggestions/args-instead-of-tuple-errors.stderr index 510b99bb5af..143363321da 100644 --- a/tests/ui/suggestions/args-instead-of-tuple-errors.stderr +++ b/tests/ui/suggestions/args-instead-of-tuple-errors.stderr @@ -2,7 +2,10 @@ error[E0061]: this enum variant takes 1 argument but 2 arguments were supplied --> $DIR/args-instead-of-tuple-errors.rs:6:34 | LL | let _: Option<(i32, bool)> = Some(1, 2); - | ^^^^ - unexpected argument of type `{integer}` + | ^^^^ --- + | | | + | | unexpected argument of type `{integer}` + | help: remove the extra argument | note: expected `(i32, bool)`, found integer --> $DIR/args-instead-of-tuple-errors.rs:6:39 @@ -20,17 +23,15 @@ LL | let _: Option<(i32, bool)> = Some(1, 2); | this argument influences the type of `Some` note: tuple variant defined here --> $SRC_DIR/core/src/option.rs:LL:COL -help: remove the extra argument - | -LL - let _: Option<(i32, bool)> = Some(1, 2); -LL + let _: Option<(i32, bool)> = Some(/* (i32, bool) */); - | error[E0061]: this function takes 1 argument but 2 arguments were supplied --> $DIR/args-instead-of-tuple-errors.rs:8:5 | LL | int_bool(1, 2); - | ^^^^^^^^ - unexpected argument of type `{integer}` + | ^^^^^^^^ --- + | | | + | | unexpected argument of type `{integer}` + | help: remove the extra argument | note: expected `(i32, bool)`, found integer --> $DIR/args-instead-of-tuple-errors.rs:8:14 @@ -44,11 +45,6 @@ note: function defined here | LL | fn int_bool(_: (i32, bool)) { | ^^^^^^^^ -------------- -help: remove the extra argument - | -LL - int_bool(1, 2); -LL + int_bool(/* (i32, bool) */); - | error[E0061]: this enum variant takes 1 argument but 0 arguments were supplied --> $DIR/args-instead-of-tuple-errors.rs:11:28 diff --git a/tests/ui/tuple/wrong_argument_ice-3.stderr b/tests/ui/tuple/wrong_argument_ice-3.stderr index 7143c959478..8b4fca4de7d 100644 --- a/tests/ui/tuple/wrong_argument_ice-3.stderr +++ b/tests/ui/tuple/wrong_argument_ice-3.stderr @@ -2,7 +2,10 @@ error[E0061]: this method takes 1 argument but 2 arguments were supplied --> $DIR/wrong_argument_ice-3.rs:9:16 | LL | groups.push(new_group, vec![process]); - | ^^^^ ------------- unexpected argument of type `Vec<&Process>` + | ^^^^ --------------- + | | | + | | unexpected argument of type `Vec<&Process>` + | help: remove the extra argument | note: expected `(Vec<String>, Vec<Process>)`, found `Vec<String>` --> $DIR/wrong_argument_ice-3.rs:9:21 @@ -13,11 +16,6 @@ LL | groups.push(new_group, vec![process]); found struct `Vec<String>` note: associated function defined here --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -help: remove the extra argument - | -LL - groups.push(new_group, vec![process]); -LL + groups.push(/* (Vec<String>, Vec<Process>) */); - | error: aborting due to previous error |
