1 // ignore-tidy-linelength
3 #![feature(decl_macro, associated_type_defaults)]
4 #![allow(unused, private_in_public)]
13 impl PrivTr for Pub {}
14 pub trait PubTr: PrivTr {}
17 let value = <Pub as PrivTr>::method;
18 //~^ ERROR type `for<'r> fn(&'r priv_trait::Pub) {<priv_trait::Pub as priv_trait::PrivTr>::method}` is private
20 //~^ ERROR type `for<'r> fn(&'r priv_trait::Pub) {<priv_trait::Pub as priv_trait::PrivTr>::method}` is private
22 //~^ ERROR type `for<'r> fn(&'r Self) {<Self as priv_trait::PrivTr>::method}` is private
23 <Pub as PrivTr>::CONST;
24 //~^ ERROR associated constant `PrivTr::CONST` is private
25 let _: <Pub as PrivTr>::AssocTy;
26 //~^ ERROR trait `priv_trait::PrivTr` is private
27 //~| ERROR trait `priv_trait::PrivTr` is private
28 pub type InSignatureTy = <Pub as PrivTr>::AssocTy;
29 //~^ ERROR trait `priv_trait::PrivTr` is private
30 pub trait InSignatureTr: PrivTr {}
31 //~^ ERROR trait `priv_trait::PrivTr` is private
33 //~^ ERROR trait `priv_trait::PrivTr` is private
42 fn method(&self, arg: Priv) {}
49 let value = <Pub as PubTr>::method;
50 //~^ ERROR type `priv_signature::Priv` is private
52 //~^ ERROR type `priv_signature::Priv` is private
54 //~^ ERROR type `priv_signature::Priv` is private
58 priv_signature::mac!();
63 fn method<T>(&self) {}
70 let value = <Pub as PubTr>::method::<Priv>;
71 //~^ ERROR type `priv_substs::Priv` is private
73 //~^ ERROR type `priv_substs::Priv` is private
75 //~^ ERROR type `priv_substs::Priv` is private
82 mod priv_parent_substs {
83 pub trait PubTr<T = Priv> {
90 impl PubTr<Priv> for Pub {}
91 impl PubTr<Pub> for Priv {}
94 let value = <Pub as PubTr>::method;
95 //~^ ERROR type `priv_parent_substs::Priv` is private
97 //~^ ERROR type `priv_parent_substs::Priv` is private
98 let value = <Pub as PubTr<_>>::method;
99 //~^ ERROR type `priv_parent_substs::Priv` is private
101 //~^ ERROR type `priv_parent_substs::Priv` is private
103 //~^ ERROR type `priv_parent_substs::Priv` is private
105 let value = <Priv as PubTr<_>>::method;
106 //~^ ERROR type `priv_parent_substs::Priv` is private
108 //~^ ERROR type `priv_parent_substs::Priv` is private
110 //~^ ERROR type `priv_parent_substs::Priv` is private
112 <Pub as PubTr>::CONST;
113 //~^ ERROR type `priv_parent_substs::Priv` is private
114 <Pub as PubTr<_>>::CONST;
115 //~^ ERROR type `priv_parent_substs::Priv` is private
116 <Priv as PubTr<_>>::CONST;
117 //~^ ERROR type `priv_parent_substs::Priv` is private
119 let _: <Pub as PubTr>::AssocTy;
120 //~^ ERROR type `priv_parent_substs::Priv` is private
121 //~| ERROR type `priv_parent_substs::Priv` is private
122 let _: <Pub as PubTr<_>>::AssocTy;
123 //~^ ERROR type `priv_parent_substs::Priv` is private
124 //~| ERROR type `priv_parent_substs::Priv` is private
125 let _: <Priv as PubTr<_>>::AssocTy;
126 //~^ ERROR type `priv_parent_substs::Priv` is private
127 //~| ERROR type `priv_parent_substs::Priv` is private
129 pub type InSignatureTy1 = <Pub as PubTr>::AssocTy;
130 //~^ ERROR type `priv_parent_substs::Priv` is private
131 pub type InSignatureTy2 = <Priv as PubTr<Pub>>::AssocTy;
132 //~^ ERROR type `priv_parent_substs::Priv` is private
134 //~^ ERROR type `priv_parent_substs::Priv` is private
137 fn priv_parent_substs() {
138 priv_parent_substs::mac!();