// check-pass #![feature(inherent_associated_types)] #![allow(incomplete_features)] struct S; impl S { type P = ::P; } trait O { type P; } impl O for i32 { type P = String; } fn main() { let _: S::P = String::new(); }