]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass-fulldeps/empty-struct-braces-derive.rs
Auto merge of #61212 - alexcrichton:skip-rustc, r=pietroalbini
[rust.git] / src / test / run-pass-fulldeps / empty-struct-braces-derive.rs
1 // `#[derive(Trait)]` works for empty structs/variants with braces or parens.
2
3 #![feature(rustc_private)]
4
5 extern crate serialize as rustc_serialize;
6
7 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash,
8          Default, Debug, RustcEncodable, RustcDecodable)]
9 struct S {}
10
11 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash,
12          Default, Debug, RustcEncodable, RustcDecodable)]
13 struct Z();
14
15 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash,
16          Debug, RustcEncodable, RustcDecodable)]
17 enum E {
18     V {},
19     U,
20     W(),
21 }
22
23 fn main() {
24     let s = S {};
25     let s1 = s;
26     let s2 = s.clone();
27     assert_eq!(s, s1);
28     assert_eq!(s, s2);
29     assert!(!(s < s1));
30     assert_eq!(format!("{:?}", s), "S");
31
32     let z = Z();
33     let z1 = z;
34     let z2 = z.clone();
35     assert_eq!(z, z1);
36     assert_eq!(z, z2);
37     assert!(!(z < z1));
38     assert_eq!(format!("{:?}", z), "Z");
39
40     let e = E::V {};
41     let e1 = e;
42     let e2 = e.clone();
43     assert_eq!(e, e1);
44     assert_eq!(e, e2);
45     assert!(!(e < e1));
46     assert_eq!(format!("{:?}", e), "V");
47
48     let e = E::W();
49     let e1 = e;
50     let e2 = e.clone();
51     assert_eq!(e, e1);
52     assert_eq!(e, e2);
53     assert!(!(e < e1));
54     assert_eq!(format!("{:?}", e), "W");
55 }