1 #![feature(decl_macro, associated_type_defaults)]
2 #![allow(unused, private_in_public)]
11 impl PrivTr for Pub {}
12 pub trait PubTr: PrivTr {}
15 let value = <Pub as PrivTr>::method;
16 //~^ ERROR type `for<'a> fn(&'a priv_trait::Pub) {<priv_trait::Pub as PrivTr>::method}` is private
18 //~^ ERROR type `for<'a> fn(&'a priv_trait::Pub) {<priv_trait::Pub as PrivTr>::method}` is private
20 //~^ ERROR type `for<'a> fn(&'a Self) {<Self as PrivTr>::method}` is private
21 <Pub as PrivTr>::CONST;
22 //~^ ERROR associated constant `PrivTr::CONST` is private
23 let _: <Pub as PrivTr>::AssocTy;
24 //~^ ERROR associated type `PrivTr::AssocTy` is private
25 pub type InSignatureTy = <Pub as PrivTr>::AssocTy;
26 //~^ ERROR trait `PrivTr` is private
27 pub trait InSignatureTr: PrivTr {}
28 //~^ ERROR trait `PrivTr` is private
30 //~^ ERROR trait `PrivTr` is private
39 fn method(&self, arg: Priv) {}
46 let value = <Pub as PubTr>::method;
47 //~^ ERROR type `priv_signature::Priv` is private
49 //~^ ERROR type `priv_signature::Priv` is private
51 //~^ ERROR type `priv_signature::Priv` is private
55 priv_signature::mac!();
60 fn method<T>(&self) {}
67 let value = <Pub as PubTr>::method::<Priv>;
68 //~^ ERROR type `priv_substs::Priv` is private
70 //~^ ERROR type `priv_substs::Priv` is private
72 //~^ ERROR type `priv_substs::Priv` is private
79 mod priv_parent_substs {
80 pub trait PubTr<T = Priv> {
87 impl PubTr<Priv> for Pub {}
88 impl PubTr<Pub> for Priv {}
91 let value = <Pub as PubTr>::method;
92 //~^ ERROR type `priv_parent_substs::Priv` is private
94 //~^ ERROR type `priv_parent_substs::Priv` is private
95 let value = <Pub as PubTr<_>>::method;
96 //~^ ERROR type `priv_parent_substs::Priv` is private
98 //~^ ERROR type `priv_parent_substs::Priv` is private
100 //~^ ERROR type `priv_parent_substs::Priv` is private
102 let value = <Priv as PubTr<_>>::method;
103 //~^ ERROR type `priv_parent_substs::Priv` is private
105 //~^ ERROR type `priv_parent_substs::Priv` is private
107 //~^ ERROR type `priv_parent_substs::Priv` is private
109 <Pub as PubTr>::CONST;
110 //~^ ERROR type `priv_parent_substs::Priv` is private
111 <Pub as PubTr<_>>::CONST;
112 //~^ ERROR type `priv_parent_substs::Priv` is private
113 <Priv as PubTr<_>>::CONST;
114 //~^ ERROR type `priv_parent_substs::Priv` is private
116 let _: <Pub as PubTr>::AssocTy; // FIXME no longer an error?!
117 let _: <Pub as PubTr<_>>::AssocTy;
118 //~^ ERROR type `priv_parent_substs::Priv` is private
119 let _: <Priv as PubTr<_>>::AssocTy;
120 //~^ ERROR type `priv_parent_substs::Priv` is private
122 pub type InSignatureTy1 = <Pub as PubTr>::AssocTy;
123 //~^ ERROR type `priv_parent_substs::Priv` is private
124 pub type InSignatureTy2 = <Priv as PubTr<Pub>>::AssocTy;
125 //~^ ERROR type `priv_parent_substs::Priv` is private
127 //~^ ERROR type `priv_parent_substs::Priv` is private
130 fn priv_parent_substs() {
131 priv_parent_substs::mac!();