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)15 fn f(_: m::Alias) {} //~ ERROR type `Priv` is private
16                      //~^ ERROR type `Priv` is private
f_ext(_: ext::Alias)17 fn 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>27 fn g() -> impl Tr2<m::Alias> { 0 } //~ ERROR type `Priv` is private
g_ext() -> impl Tr2<ext::Alias>28 fn g_ext() -> impl Tr2<ext::Alias> { 0 } //~ ERROR type `ext::Priv` is private
29 
main()30 fn main() {}
31