1 // aux-build:private-inferred-type.rs 2 3 #![allow(warnings)] 4 5 extern crate private_inferred_type as ext; 6 7 mod m { 8 struct Priv; 9 pub type Alias = Priv; 10 11 pub trait Trait { type X; } 12 impl Trait for Priv { type X = u8; } 13 } 14 f(_: m::Alias)15fn f(_: m::Alias) {} //~ ERROR type `Priv` is private 16 //~^ ERROR type `Priv` is private f_ext(_: ext::Alias)17fn f_ext(_: ext::Alias) {} //~ ERROR type `ext::Priv` is private 18 //~^ ERROR type `ext::Priv` is private 19 20 trait Tr1 {} 21 impl m::Alias {} //~ ERROR type `Priv` is private 22 impl Tr1 for ext::Alias {} //~ ERROR type `ext::Priv` is private 23 type A = <m::Alias as m::Trait>::X; //~ ERROR type `Priv` is private 24 25 trait Tr2<T> {} 26 impl<T> Tr2<T> for u8 {} g() -> impl Tr2<m::Alias>27fn g() -> impl Tr2<m::Alias> { 0 } //~ ERROR type `Priv` is private g_ext() -> impl Tr2<ext::Alias>28fn g_ext() -> impl Tr2<ext::Alias> { 0 } //~ ERROR type `ext::Priv` is private 29 main()30fn main() {} 31