test: add test case for disambiguate the associated function
diagnostic
This commit is contained in:
parent
6c6a2c1ef7
commit
ffd619a695
@ -0,0 +1,28 @@
|
||||
struct A {}
|
||||
|
||||
fn main() {
|
||||
let _a = A {};
|
||||
_a.new(1);
|
||||
//~^ ERROR no method named `new` found for struct `A` in the current scope
|
||||
}
|
||||
|
||||
trait M {
|
||||
fn new(_a: i32);
|
||||
}
|
||||
impl M for A {
|
||||
fn new(_a: i32) {}
|
||||
}
|
||||
|
||||
trait N {
|
||||
fn new(_a: Self, _b: i32);
|
||||
}
|
||||
impl N for A {
|
||||
fn new(_a: Self, _b: i32) {}
|
||||
}
|
||||
|
||||
trait O {
|
||||
fn new(_a: Self, _b: i32);
|
||||
}
|
||||
impl O for A {
|
||||
fn new(_a: A, _b: i32) {}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
error[E0599]: no method named `new` found for struct `A` in the current scope
|
||||
--> $DIR/disambiguate-associated-function-first-arg.rs:5:8
|
||||
|
|
||||
LL | struct A {}
|
||||
| -------- method `new` not found for this struct
|
||||
...
|
||||
LL | _a.new(1);
|
||||
| ^^^ this is an associated function, not a method
|
||||
|
|
||||
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
|
||||
note: candidate #1 is defined in the trait `M`
|
||||
--> $DIR/disambiguate-associated-function-first-arg.rs:10:5
|
||||
|
|
||||
LL | fn new(_a: i32);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
note: candidate #2 is defined in the trait `N`
|
||||
--> $DIR/disambiguate-associated-function-first-arg.rs:17:5
|
||||
|
|
||||
LL | fn new(_a: Self, _b: i32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: candidate #3 is defined in the trait `O`
|
||||
--> $DIR/disambiguate-associated-function-first-arg.rs:24:5
|
||||
|
|
||||
LL | fn new(_a: Self, _b: i32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
help: disambiguate the associated function for candidate #1
|
||||
|
|
||||
LL | <A as M>::new(1);
|
||||
| ~~~~~~~~~~~~~~~~
|
||||
help: disambiguate the associated function for candidate #2
|
||||
|
|
||||
LL | <A as N>::new(_a, 1);
|
||||
| ~~~~~~~~~~~~~~~~~~~~
|
||||
help: disambiguate the associated function for candidate #3
|
||||
|
|
||||
LL | <A as O>::new(_a, 1);
|
||||
| ~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0599`.
|
Loading…
Reference in New Issue
Block a user