]> git.lizzy.rs Git - rust.git/blob - src/test/ui/privacy/associated-item-privacy-type-binding.rs
update ui tests
[rust.git] / src / test / ui / privacy / associated-item-privacy-type-binding.rs
1 #![feature(decl_macro, associated_type_defaults)]
2 #![allow(unused, private_in_public)]
3
4 mod priv_trait {
5     trait PrivTr {
6         type AssocTy = u8;
7     }
8     pub trait PubTr: PrivTr {}
9
10     pub macro mac1() {
11         let _: Box<PubTr<AssocTy = u8>>;
12         //~^ ERROR trait `priv_trait::PrivTr` is private
13         //~| ERROR trait `priv_trait::PrivTr` is private
14         type InSignatureTy2 = Box<PubTr<AssocTy = u8>>;
15         //~^ ERROR trait `priv_trait::PrivTr` is private
16         trait InSignatureTr2: PubTr<AssocTy = u8> {}
17         //~^ ERROR trait `priv_trait::PrivTr` is private
18     }
19     pub macro mac2() {
20         let _: Box<PrivTr<AssocTy = u8>>;
21         //~^ ERROR trait `priv_trait::PrivTr` is private
22         //~| ERROR trait `priv_trait::PrivTr` is private
23         type InSignatureTy1 = Box<PrivTr<AssocTy = u8>>;
24         //~^ ERROR trait `priv_trait::PrivTr` is private
25         trait InSignatureTr1: PrivTr<AssocTy = u8> {}
26         //~^ ERROR trait `priv_trait::PrivTr` is private
27     }
28 }
29 fn priv_trait1() {
30     priv_trait::mac1!();
31 }
32 fn priv_trait2() {
33     priv_trait::mac2!();
34 }
35
36 mod priv_parent_substs {
37     pub trait PubTrWithParam<T = Priv> {
38         type AssocTy = u8;
39     }
40     struct Priv;
41     pub trait PubTr: PubTrWithParam<Priv> {}
42
43     pub macro mac() {
44         let _: Box<PubTrWithParam<AssocTy = u8>>;
45         //~^ ERROR type `priv_parent_substs::Priv` is private
46         //~| ERROR type `priv_parent_substs::Priv` is private
47         let _: Box<PubTr<AssocTy = u8>>;
48         //~^ ERROR type `priv_parent_substs::Priv` is private
49         //~| ERROR type `priv_parent_substs::Priv` is private
50         pub type InSignatureTy1 = Box<PubTrWithParam<AssocTy = u8>>;
51         //~^ ERROR type `priv_parent_substs::Priv` is private
52         pub type InSignatureTy2 = Box<PubTr<AssocTy = u8>>;
53         //~^ ERROR type `priv_parent_substs::Priv` is private
54         trait InSignatureTr1: PubTrWithParam<AssocTy = u8> {}
55         //~^ ERROR type `priv_parent_substs::Priv` is private
56         trait InSignatureTr2: PubTr<AssocTy = u8> {}
57         //~^ ERROR type `priv_parent_substs::Priv` is private
58     }
59 }
60 fn priv_parent_substs() {
61     priv_parent_substs::mac!();
62 }
63
64 fn main() {}