]> git.lizzy.rs Git - rust.git/blob - tests/ui/default_trait_access.rs
Merge pull request #3125 from nrc/pub-conf
[rust.git] / tests / ui / default_trait_access.rs
1 #![feature(tool_lints)]
2
3 #![warn(clippy::default_trait_access)]
4
5 use std::default::Default as D2;
6 use std::string;
7 use std::default;
8
9 fn main() {
10     let s1: String = Default::default();
11
12     let s2 = String::default();
13
14     let s3: String = D2::default();
15
16     let s4: String = std::default::Default::default();
17
18     let s5 = string::String::default();
19
20     let s6: String = default::Default::default();
21
22     let s7 = std::string::String::default();
23
24     let s8: String = DefaultFactory::make_t_badly();
25
26     let s9: String = DefaultFactory::make_t_nicely();
27
28     let s10 = DerivedDefault::default();
29
30     let s11: GenericDerivedDefault<String> = Default::default();
31
32     let s12 = GenericDerivedDefault::<String>::default();
33
34     let s13 = TupleDerivedDefault::default();
35
36     let s14: TupleDerivedDefault = Default::default();
37
38     let s15: ArrayDerivedDefault = Default::default();
39
40     let s16 = ArrayDerivedDefault::default();
41
42     let s17: TupleStructDerivedDefault = Default::default();
43
44     let s18 = TupleStructDerivedDefault::default();
45
46     let s19 = <DerivedDefault as Default>::default();
47
48     println!(
49         "[{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}], [{:?}]",
50         s1,
51         s2,
52         s3,
53         s4,
54         s5,
55         s6,
56         s7,
57         s8,
58         s9,
59         s10,
60         s11,
61         s12,
62         s13,
63         s14,
64         s15,
65         s16,
66         s17,
67         s18,
68         s19,
69     );
70 }
71
72 struct DefaultFactory;
73
74 impl DefaultFactory {
75     pub fn make_t_badly<T: Default>() -> T {
76         Default::default()
77     }
78
79     pub fn make_t_nicely<T: Default>() -> T {
80         T::default()
81     }
82 }
83
84 #[derive(Debug, Default)]
85 struct DerivedDefault {
86     pub s: String,
87 }
88
89 #[derive(Debug, Default)]
90 struct GenericDerivedDefault<T: Default + std::fmt::Debug> {
91     pub s: T,
92 }
93
94 #[derive(Debug, Default)]
95 struct TupleDerivedDefault {
96     pub s: (String, String),
97 }
98
99 #[derive(Debug, Default)]
100 struct ArrayDerivedDefault {
101     pub s: [String; 10],
102 }
103
104 #[derive(Debug, Default)]
105 struct TupleStructDerivedDefault(String);