// run-pass // Test equality constraints on associated types in a where clause. // pretty-expanded FIXME #23616 pub trait Foo { type A; fn boo(&self) -> ::A; } #[derive(PartialEq)] pub struct Bar; impl Foo for isize { type A = usize; fn boo(&self) -> usize { 42 } } impl Foo for char { type A = Bar; fn boo(&self) -> Bar { Bar } } fn foo_bar>(x: I) -> Bar { x.boo() } fn foo_uint>(x: I) -> usize { x.boo() } pub fn main() { let a = 42; foo_uint(a); let a = 'a'; foo_bar(a); }