1 // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10 
11 #![allow(clippy::zero_prefixed_literal, clippy::type_complexity)]
12 
13 #[cfg(feature = "use_core")]
14 extern crate core;
15 
16 #[macro_use]
17 extern crate derivative;
18 
19 #[derive(Derivative)]
20 #[derivative(Debug, Default, Eq, Hash, PartialEq)]
21 // TODO: Ord, PartialOrd
22 struct Array<T> {
23     f00: [T; 00],
24     f01: [T; 01],
25     f02: [T; 02],
26     f03: [T; 03],
27     f04: [T; 04],
28     f05: [T; 05],
29     f06: [T; 06],
30     f07: [T; 07],
31     f08: [T; 08],
32     f09: [T; 09],
33     f10: [T; 10],
34     f11: [T; 11],
35     f12: [T; 12],
36     f13: [T; 13],
37     f14: [T; 14],
38     f15: [T; 15],
39     f16: [T; 16],
40     f17: [T; 17],
41     f18: [T; 18],
42     f19: [T; 19],
43     f20: [T; 20],
44     f21: [T; 21],
45     f22: [T; 22],
46     f23: [T; 23],
47     f24: [T; 24],
48     f25: [T; 25],
49     f26: [T; 26],
50     f27: [T; 27],
51     f28: [T; 28],
52     f29: [T; 29],
53     f30: [T; 30],
54     f31: [T; 31],
55     f32: [T; 32],
56 }
57 
58 // FIXME(#7622): merge with `Array` once `[T; N]: Clone` where `T: Clone`
59 #[derive(Derivative)]
60 #[derivative(Clone, Copy)]
61 struct CopyArray<T: Copy> {
62     f00: [T; 00],
63     f01: [T; 01],
64     f02: [T; 02],
65     f03: [T; 03],
66     f04: [T; 04],
67     f05: [T; 05],
68     f06: [T; 06],
69     f07: [T; 07],
70     f08: [T; 08],
71     f09: [T; 09],
72     f10: [T; 10],
73     f11: [T; 11],
74     f12: [T; 12],
75     f13: [T; 13],
76     f14: [T; 14],
77     f15: [T; 15],
78     f16: [T; 16],
79     f17: [T; 17],
80     f18: [T; 18],
81     f19: [T; 19],
82     f20: [T; 20],
83     f21: [T; 21],
84     f22: [T; 22],
85     f23: [T; 23],
86     f24: [T; 24],
87     f25: [T; 25],
88     f26: [T; 26],
89     f27: [T; 27],
90     f28: [T; 28],
91     f29: [T; 29],
92     f30: [T; 30],
93     f31: [T; 31],
94     f32: [T; 32],
95 }
96 
97 #[derive(Derivative)]
98 #[derivative(Clone, Copy, Debug, Eq, Hash, PartialEq)]
99 // TODO: Ord, PartialOrd
100 struct Fn<A, B, C, D, E, F, G, H, I, J, K, L> {
101     f00: fn(),
102     f01: fn(A),
103     f02: fn(A, B),
104     f03: fn(A, B, C),
105     f04: fn(A, B, C, D),
106     f05: fn(A, B, C, D, E),
107     f06: fn(A, B, C, D, E, F),
108     f07: fn(A, B, C, D, E, F, G),
109     f08: fn(A, B, C, D, E, F, G, H),
110     f09: fn(A, B, C, D, E, F, G, H, I),
111     f10: fn(A, B, C, D, E, F, G, H, I, J),
112     f11: fn(A, B, C, D, E, F, G, H, I, J, K),
113     f12: fn(A, B, C, D, E, F, G, H, I, J, K, L),
114 }
115 
116 #[derive(Derivative)]
117 #[derivative(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
118 // TODO: Ord, PartialOrd
119 struct Tuple<A, B, C, D, E, F, G, H, I, J, K, L> {
120     f00: (),
121     f01: (A,),
122     f02: (A, B),
123     f03: (A, B, C),
124     f04: (A, B, C, D),
125     f05: (A, B, C, D, E),
126     f06: (A, B, C, D, E, F),
127     f07: (A, B, C, D, E, F, G),
128     f08: (A, B, C, D, E, F, G, H),
129     f09: (A, B, C, D, E, F, G, H, I),
130     f10: (A, B, C, D, E, F, G, H, I, J),
131     f11: (A, B, C, D, E, F, G, H, I, J, K),
132     f12: (A, B, C, D, E, F, G, H, I, J, K, L),
133 }
134 
135 #[test]
main()136 fn main() {}
137