]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-23808.rs
Enable full revision in const generics ui tests
[rust.git] / src / test / ui / issues / issue-23808.rs
1 // run-pass
2
3 #![deny(dead_code)]
4
5 // use different types / traits to test all combinations
6
7 trait Const {
8     const C: ();
9 }
10
11 trait StaticFn {
12     fn sfn();
13 }
14
15 struct ConstStruct;
16 struct StaticFnStruct;
17
18 enum ConstEnum {}
19 enum StaticFnEnum {}
20
21 struct AliasedConstStruct;
22 struct AliasedStaticFnStruct;
23
24 enum AliasedConstEnum {}
25 enum AliasedStaticFnEnum {}
26
27 type AliasConstStruct    = AliasedConstStruct;
28 type AliasStaticFnStruct = AliasedStaticFnStruct;
29 type AliasConstEnum      = AliasedConstEnum;
30 type AliasStaticFnEnum   = AliasedStaticFnEnum;
31
32 macro_rules! impl_Const {($($T:ident),*) => {$(
33     impl Const for $T {
34         const C: () = ();
35     }
36 )*}}
37
38 macro_rules! impl_StaticFn {($($T:ident),*) => {$(
39     impl StaticFn for $T {
40         fn sfn() {}
41     }
42 )*}}
43
44 impl_Const!(ConstStruct, ConstEnum, AliasedConstStruct, AliasedConstEnum);
45 impl_StaticFn!(StaticFnStruct, StaticFnEnum, AliasedStaticFnStruct, AliasedStaticFnEnum);
46
47 fn main() {
48     let _ = ConstStruct::C;
49     let _ = ConstEnum::C;
50
51     StaticFnStruct::sfn();
52     StaticFnEnum::sfn();
53
54     let _ = AliasConstStruct::C;
55     let _ = AliasConstEnum::C;
56
57     AliasStaticFnStruct::sfn();
58     AliasStaticFnEnum::sfn();
59 }