Fixes #76267 When there is a single applicable method candidate, but its trait bounds are not satisfied, we avoid saying that the method is "not found". Insted, we update the error message to directly mention which bounds are not satisfied, rather than mentioning them in a note.
79 lines
2.4 KiB
Text
79 lines
2.4 KiB
Text
error[E0061]: this function takes 0 arguments but 1 argument was supplied
|
|
--> $DIR/method-call-err-msg.rs:13:7
|
|
|
|
|
LL | x.zero(0)
|
|
| ^^^^ - supplied 1 argument
|
|
| |
|
|
| expected 0 arguments
|
|
|
|
|
note: associated function defined here
|
|
--> $DIR/method-call-err-msg.rs:5:8
|
|
|
|
|
LL | fn zero(self) -> Foo { self }
|
|
| ^^^^ ----
|
|
|
|
error[E0061]: this function takes 1 argument but 0 arguments were supplied
|
|
--> $DIR/method-call-err-msg.rs:14:7
|
|
|
|
|
LL | .one()
|
|
| ^^^- supplied 0 arguments
|
|
| |
|
|
| expected 1 argument
|
|
|
|
|
note: associated function defined here
|
|
--> $DIR/method-call-err-msg.rs:6:8
|
|
|
|
|
LL | fn one(self, _: isize) -> Foo { self }
|
|
| ^^^ ---- --------
|
|
|
|
error[E0061]: this function takes 2 arguments but 1 argument was supplied
|
|
--> $DIR/method-call-err-msg.rs:15:7
|
|
|
|
|
LL | .two(0);
|
|
| ^^^ - supplied 1 argument
|
|
| |
|
|
| expected 2 arguments
|
|
|
|
|
note: associated function defined here
|
|
--> $DIR/method-call-err-msg.rs:7:8
|
|
|
|
|
LL | fn two(self, _: isize, _: isize) -> Foo { self }
|
|
| ^^^ ---- -------- --------
|
|
|
|
error[E0599]: the method `take` exists for struct `Foo`, but its trait bounds were not satisfied
|
|
--> $DIR/method-call-err-msg.rs:19:7
|
|
|
|
|
LL | pub struct Foo;
|
|
| ---------------
|
|
| |
|
|
| method `take` not found for this
|
|
| doesn't satisfy `Foo: Iterator`
|
|
...
|
|
LL | .take()
|
|
| ^^^^ method cannot be called on `Foo` due to unsatisfied trait bounds
|
|
|
|
|
= note: the following trait bounds were not satisfied:
|
|
`Foo: Iterator`
|
|
which is required by `&mut Foo: Iterator`
|
|
= help: items from traits can only be used if the trait is implemented and in scope
|
|
= note: the following trait defines an item `take`, perhaps you need to implement it:
|
|
candidate #1: `Iterator`
|
|
|
|
error[E0061]: this function takes 3 arguments but 0 arguments were supplied
|
|
--> $DIR/method-call-err-msg.rs:21:7
|
|
|
|
|
LL | y.three::<usize>();
|
|
| ^^^^^--------- supplied 0 arguments
|
|
| |
|
|
| expected 3 arguments
|
|
|
|
|
note: associated function defined here
|
|
--> $DIR/method-call-err-msg.rs:8:8
|
|
|
|
|
LL | fn three<T>(self, _: T, _: T, _: T) -> Foo { self }
|
|
| ^^^^^ ---- ---- ---- ----
|
|
|
|
error: aborting due to 5 previous errors
|
|
|
|
Some errors have detailed explanations: E0061, E0599.
|
|
For more information about an error, try `rustc --explain E0061`.
|