// check-pass | |
#![feature(associated_type_bounds)] | |
trait Foo { | |
type Bar; | |
} | |
impl Foo for () { | |
type Bar = (); | |
} | |
fn a<F: Foo>() where F::Bar: Copy {} | |
fn b<F: Foo>() where <F as Foo>::Bar: Copy {} | |
// This used to complain about ambiguous associated types. | |
fn c<F: Foo<Bar: Foo>>() where F::Bar: Copy {} | |
fn main() { | |
a::<()>(); | |
b::<()>(); | |
c::<()>(); | |
} |