rust/tests/ui/specialization/issue-70442.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

24 lines
664 B
Rust
Raw Normal View History

2020-05-17 03:22:48 -05:00
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
2020-03-28 19:01:32 -05:00
// check-pass
trait Trait {
type Assoc;
}
impl<T> 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<X: Trait<Assoc=bool>>() {}
fn main() {
foo::<()>(); // `<() as Trait>::Assoc` is normalized to `bool` correctly
}