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