Use suggestion for assoc fn called like method
When encountering an unexisting method for a given trait where an associated function has the same name, suggest using the appropriate syntax, instead of using `help` text. When only one candidate is found, do not call it "candidate #1", just call it "the candidate".
This commit is contained in:
parent
dcb405667c
commit
447d894edf
4 changed files with 51 additions and 24 deletions
|
|
@ -22,7 +22,7 @@ LL | ().clone() //~ ERROR no method named `clone` found
|
|||
|
|
||||
= help: items from traits can only be used if the trait is in scope
|
||||
= note: the following trait is implemented but not in scope, perhaps add a `use` for it:
|
||||
candidate #1: `use std::clone::Clone;`
|
||||
`use std::clone::Clone;`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ LL | pub macro m() { ().f() } //~ ERROR no method named `f` found for type `
|
|||
|
|
||||
= help: items from traits can only be used if the trait is in scope
|
||||
= note: the following trait is implemented but not in scope, perhaps add a `use` for it:
|
||||
candidate #1: `use foo::T;`
|
||||
`use foo::T;`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,11 @@ error[E0599]: no method named `f9` found for type `usize` in the current scope
|
|||
--> $DIR/issue-7575.rs:74:18
|
||||
|
|
||||
LL | u.f8(42) + u.f9(342) + m.fff(42)
|
||||
| ^^
|
||||
| --^^
|
||||
| |
|
||||
| help: use associated function syntax intead: `usize::f9`
|
||||
|
|
||||
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
|
||||
= help: try with `usize::f9`
|
||||
note: candidate #1 is defined in the trait `CtxtFn`
|
||||
--> $DIR/issue-7575.rs:16:5
|
||||
|
|
||||
|
|
@ -37,11 +38,12 @@ LL | struct Myisize(isize);
|
|||
| ---------------------- method `fff` not found for this
|
||||
...
|
||||
LL | u.f8(42) + u.f9(342) + m.fff(42)
|
||||
| ^^^
|
||||
| --^^^
|
||||
| |
|
||||
| help: use associated function syntax intead: `Myisize::fff`
|
||||
|
|
||||
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
|
||||
= help: try with `Myisize::fff`
|
||||
note: candidate #1 is defined in an impl for the type `Myisize`
|
||||
note: the candidate is defined in an impl for the type `Myisize`
|
||||
--> $DIR/issue-7575.rs:51:5
|
||||
|
|
||||
LL | fn fff(i: isize) -> isize {
|
||||
|
|
@ -51,11 +53,12 @@ error[E0599]: no method named `is_str` found for type `T` in the current scope
|
|||
--> $DIR/issue-7575.rs:82:7
|
||||
|
|
||||
LL | t.is_str()
|
||||
| ^^^^^^
|
||||
| --^^^^^^
|
||||
| |
|
||||
| help: use associated function syntax intead: `T::is_str`
|
||||
|
|
||||
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
|
||||
= help: try with `T::is_str`
|
||||
note: candidate #1 is defined in the trait `ManyImplTrait`
|
||||
note: the candidate is defined in the trait `ManyImplTrait`
|
||||
--> $DIR/issue-7575.rs:57:5
|
||||
|
|
||||
LL | fn is_str() -> bool {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue