| trait A { | |
| type Type; | |
| const CONST: usize; | |
| fn foo(&self); | |
| } | |
| trait B { | |
| type Type; | |
| const CONST: usize; | |
| fn foo(&self); | |
| } | |
| struct S; | |
| impl A for S { | |
| type Type = (); | |
| const CONST: usize = 1; //~ NOTE candidate #1 | |
| fn foo(&self) {} //~ NOTE candidate #1 | |
| } | |
| impl B for S { | |
| type Type = (); | |
| const CONST: usize = 2; //~ NOTE candidate #2 | |
| fn foo(&self) {} //~ NOTE candidate #2 | |
| } | |
| fn main() { | |
| let s = S; | |
| S::foo(&s); //~ ERROR multiple applicable items in scope | |
| //~^ NOTE multiple `foo` found | |
| //~| HELP use fully-qualified syntax | |
| let _: S::Type = (); //~ ERROR ambiguous associated type | |
| //~| HELP use fully-qualified syntax | |
| let _ = S::CONST; //~ ERROR multiple applicable items in scope | |
| //~^ NOTE multiple `CONST` found | |
| //~| HELP use fully-qualified syntax | |
| } |