suggest fully qualified path with appropriate params
This commit is contained in:
parent
9714e139ff
commit
857eb02abe
3 changed files with 107 additions and 1 deletions
|
|
@ -0,0 +1,24 @@
|
|||
struct Thing;
|
||||
|
||||
trait Method<T> {
|
||||
fn method(&self) -> T;
|
||||
fn mut_method(&mut self) -> T;
|
||||
}
|
||||
|
||||
impl Method<i32> for Thing {
|
||||
fn method(&self) -> i32 { 0 }
|
||||
fn mut_method(&mut self) -> i32 { 0 }
|
||||
}
|
||||
|
||||
impl Method<u32> for Thing {
|
||||
fn method(&self) -> u32 { 0 }
|
||||
fn mut_method(&mut self) -> u32 { 0 }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let thing = Thing;
|
||||
thing.method();
|
||||
//~^ ERROR type annotations needed
|
||||
//~| ERROR type annotations needed
|
||||
thing.mut_method(); //~ ERROR type annotations needed
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
error[E0282]: type annotations needed
|
||||
--> $DIR/suggest-fully-qualified-path-with-appropriate-params.rs:20:11
|
||||
|
|
||||
LL | thing.method();
|
||||
| ------^^^^^^--
|
||||
| | |
|
||||
| | cannot infer type for type parameter `T` declared on the trait `Method`
|
||||
| this method call resolves to `T`
|
||||
|
||||
error[E0283]: type annotations needed
|
||||
--> $DIR/suggest-fully-qualified-path-with-appropriate-params.rs:20:11
|
||||
|
|
||||
LL | thing.method();
|
||||
| ------^^^^^^--
|
||||
| | |
|
||||
| | cannot infer type for type parameter `T` declared on the trait `Method`
|
||||
| this method call resolves to `T`
|
||||
|
|
||||
note: multiple `impl`s satisfying `Thing: Method<_>` found
|
||||
--> $DIR/suggest-fully-qualified-path-with-appropriate-params.rs:8:1
|
||||
|
|
||||
LL | impl Method<i32> for Thing {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | impl Method<u32> for Thing {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
help: use the fully qualified path for the potential candidates
|
||||
|
|
||||
LL | <Thing as Method<i32>>::method(&thing);
|
||||
| ++++++++++++++++++++++++++++++++ ~
|
||||
LL | <Thing as Method<u32>>::method(&thing);
|
||||
| ++++++++++++++++++++++++++++++++ ~
|
||||
|
||||
error[E0283]: type annotations needed
|
||||
--> $DIR/suggest-fully-qualified-path-with-appropriate-params.rs:23:11
|
||||
|
|
||||
LL | thing.mut_method();
|
||||
| ------^^^^^^^^^^--
|
||||
| | |
|
||||
| | cannot infer type for type parameter `T` declared on the trait `Method`
|
||||
| this method call resolves to `T`
|
||||
|
|
||||
note: multiple `impl`s satisfying `Thing: Method<_>` found
|
||||
--> $DIR/suggest-fully-qualified-path-with-appropriate-params.rs:8:1
|
||||
|
|
||||
LL | impl Method<i32> for Thing {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | impl Method<u32> for Thing {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
help: use the fully qualified path for the potential candidates
|
||||
|
|
||||
LL | <Thing as Method<i32>>::mut_method(&mut thing);
|
||||
| +++++++++++++++++++++++++++++++++++++++ ~
|
||||
LL | <Thing as Method<u32>>::mut_method(&mut thing);
|
||||
| +++++++++++++++++++++++++++++++++++++++ ~
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0282, E0283.
|
||||
For more information about an error, try `rustc --explain E0282`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue