Compare tuple element & arg types before suggesting a tuple
This commit is contained in:
parent
80059f9942
commit
54d2d30662
6 changed files with 79 additions and 32 deletions
13
src/test/ui/suggestions/args-instead-of-tuple-errors.rs
Normal file
13
src/test/ui/suggestions/args-instead-of-tuple-errors.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// Ensure we don't suggest tuple-wrapping when we'd end up with a type error
|
||||
|
||||
fn main() {
|
||||
// we shouldn't suggest to fix these - `2` isn't a `bool`
|
||||
|
||||
let _: Option<(i32, bool)> = Some(1, 2);
|
||||
//~^ ERROR this enum variant takes 1 argument but 2 arguments were supplied
|
||||
int_bool(1, 2);
|
||||
//~^ ERROR this function takes 1 argument but 2 arguments were supplied
|
||||
}
|
||||
|
||||
fn int_bool(_: (i32, bool)) {
|
||||
}
|
||||
25
src/test/ui/suggestions/args-instead-of-tuple-errors.stderr
Normal file
25
src/test/ui/suggestions/args-instead-of-tuple-errors.stderr
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
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);
|
||||
| ^^^^ - - supplied 2 arguments
|
||||
| |
|
||||
| expected 1 argument
|
||||
|
||||
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);
|
||||
| ^^^^^^^^ - - supplied 2 arguments
|
||||
| |
|
||||
| expected 1 argument
|
||||
|
|
||||
note: function defined here
|
||||
--> $DIR/args-instead-of-tuple-errors.rs:12:4
|
||||
|
|
||||
LL | fn int_bool(_: (i32, bool)) {
|
||||
| ^^^^^^^^ --------------
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0061`.
|
||||
|
|
@ -11,8 +11,8 @@ fn main() {
|
|||
let _: Option<()> = Some(());
|
||||
//~^ ERROR this enum variant takes 1 argument but 0 arguments were supplied
|
||||
|
||||
f((1, 2)); //~ ERROR this function takes 1 argument
|
||||
two_ints((1, 2)); //~ ERROR this function takes 1 argument
|
||||
}
|
||||
|
||||
fn f(_: (i32, i32)) {
|
||||
fn two_ints(_: (i32, i32)) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ fn main() {
|
|||
let _: Option<()> = Some();
|
||||
//~^ ERROR this enum variant takes 1 argument but 0 arguments were supplied
|
||||
|
||||
f(1, 2); //~ ERROR this function takes 1 argument
|
||||
two_ints(1, 2); //~ ERROR this function takes 1 argument
|
||||
}
|
||||
|
||||
fn f(_: (i32, i32)) {
|
||||
fn two_ints(_: (i32, i32)) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,18 +34,18 @@ LL | let _: Option<()> = Some(());
|
|||
error[E0061]: this function takes 1 argument but 2 arguments were supplied
|
||||
--> $DIR/args-instead-of-tuple.rs:14:5
|
||||
|
|
||||
LL | f(1, 2);
|
||||
| ^ - - supplied 2 arguments
|
||||
LL | two_ints(1, 2);
|
||||
| ^^^^^^^^ - - supplied 2 arguments
|
||||
|
|
||||
note: function defined here
|
||||
--> $DIR/args-instead-of-tuple.rs:17:4
|
||||
|
|
||||
LL | fn f(_: (i32, i32)) {
|
||||
| ^ -------------
|
||||
LL | fn two_ints(_: (i32, i32)) {
|
||||
| ^^^^^^^^ -------------
|
||||
help: use parentheses to construct a tuple
|
||||
|
|
||||
LL | f((1, 2));
|
||||
| + +
|
||||
LL | two_ints((1, 2));
|
||||
| + +
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue