#![feature(specialization)] //~ WARN the feature `specialization` is incomplete //@ check-pass trait Trait { type Assoc; } impl Trait for T { default type Assoc = bool; } // This impl inherits the `Assoc` definition from above and "locks it in", or finalizes it, making // child impls unable to further specialize it. However, since the specialization graph didn't // correctly track this, we would refuse to project `Assoc` from this impl, even though that should // happen for items that are final. impl Trait for () {} fn foo>() {} fn main() { foo::<()>(); // `<() as Trait>::Assoc` is normalized to `bool` correctly }