]> git.lizzy.rs Git - rust.git/blob - tests/ui-fulldeps/empty-struct-braces-derive.rs
Rollup merge of #107091 - clubby789:infer-ftl-missing-dollar, r=compiler-errors
[rust.git] / tests / 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 // Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
10 // files.
11 #[allow(unused_extern_crates)]
12 extern crate rustc_driver;
13
14 use rustc_macros::{Decodable, Encodable};
15
16 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug, Encodable, Decodable)]
17 struct S {}
18
19 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug, Encodable, Decodable)]
20 struct Z();
21
22 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Encodable, Decodable)]
23 enum E {
24     V {},
25     U,
26     W(),
27 }
28
29 fn main() {
30     let s = S {};
31     let s1 = s;
32     let s2 = s.clone();
33     assert_eq!(s, s1);
34     assert_eq!(s, s2);
35     assert!(!(s < s1));
36     assert_eq!(format!("{:?}", s), "S");
37
38     let z = Z();
39     let z1 = z;
40     let z2 = z.clone();
41     assert_eq!(z, z1);
42     assert_eq!(z, z2);
43     assert!(!(z < z1));
44     assert_eq!(format!("{:?}", z), "Z");
45
46     let e = E::V {};
47     let e1 = e;
48     let e2 = e.clone();
49     assert_eq!(e, e1);
50     assert_eq!(e, e2);
51     assert!(!(e < e1));
52     assert_eq!(format!("{:?}", e), "V");
53
54     let e = E::W();
55     let e1 = e;
56     let e2 = e.clone();
57     assert_eq!(e, e1);
58     assert_eq!(e, e2);
59     assert!(!(e < e1));
60     assert_eq!(format!("{:?}", e), "W");
61 }