| //@ revisions: current negative | |
| #![feature(specialization)] | |
| #![cfg_attr(negative, feature(with_negative_coherence))] | |
| #![allow(incomplete_features)] | |
| trait X {} | |
| trait Y: X {} | |
| trait Z { | |
| type Assoc: Y; | |
| } | |
| struct A<T>(T); | |
| impl<T> Y for T where T: X {} | |
| impl<T: X> Z for A<T> { | |
| type Assoc = T; | |
| } | |
| // this impl is invalid, but causes an ICE anyway | |
| impl<T> From<<A<T> as Z>::Assoc> for T {} | |
| //~^ ERROR type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct<T>`) | |
| fn main() {} |