]> git.lizzy.rs Git - rust.git/blob - tests/ui/lint/lint-stability-fields-deprecated.rs
Auto merge of #106884 - clubby789:fieldless-enum-debug, r=michaelwoerister
[rust.git] / tests / ui / lint / lint-stability-fields-deprecated.rs
1 // aux-build:lint_stability_fields.rs
2
3 #![deny(deprecated)]
4 #![allow(dead_code)]
5 #![feature(staged_api, unstable_test_feature)]
6
7 #![stable(feature = "rust1", since = "1.0.0")]
8
9 mod cross_crate {
10     extern crate lint_stability_fields;
11
12     use self::lint_stability_fields::*;
13
14     pub fn foo() {
15         let x = Stable {
16             inherit: 1,
17             override1: 2,
18             override2: 3,
19             //~^ ERROR use of deprecated field
20             override3: 4,
21         };
22
23         let _ = x.inherit;
24         let _ = x.override1;
25         let _ = x.override2;
26         //~^ ERROR use of deprecated field
27         let _ = x.override3;
28
29         let Stable {
30             inherit: _,
31             override1: _,
32             override2: _,
33             //~^ ERROR use of deprecated field
34             override3: _,
35         } = x;
36         // all fine
37         let Stable { .. } = x;
38
39         let x = Stable2(1, 2, 3, 4);
40
41         let _ = x.0;
42         let _ = x.1;
43         let _ = x.2;
44         //~^ ERROR use of deprecated field
45         let _ = x.3;
46
47         let Stable2(_,
48                    _,
49                    _,
50                    //~^ ERROR use of deprecated field
51                    _)
52             = x;
53         // all fine
54         let Stable2(..) = x;
55
56
57         let x = Unstable {
58             inherit: 1,
59             override1: 2,
60             override2: 3,
61             //~^ ERROR use of deprecated field
62         };
63
64         let _ = x.inherit;
65         let _ = x.override1;
66         let _ = x.override2;
67         //~^ ERROR use of deprecated field
68
69         let Unstable {
70             inherit: _,
71             override1: _,
72             override2: _
73             //~^ ERROR use of deprecated field
74         } = x;
75
76         let Unstable
77             // the patterns are all fine:
78             { .. } = x;
79
80
81         let x = Unstable2(1, 2, 3);
82
83         let _ = x.0;
84         let _ = x.1;
85         let _ = x.2;
86         //~^ ERROR use of deprecated field
87
88         let Unstable2
89             (_,
90              _,
91              _)
92             //~^ ERROR use of deprecated field
93             = x;
94         let Unstable2
95             // the patterns are all fine:
96             (..) = x;
97
98
99         let x = Deprecated {
100             //~^ ERROR use of deprecated struct
101             inherit: 1,
102             //~^ ERROR use of deprecated field
103             override1: 2,
104             //~^ ERROR use of deprecated field
105             override2: 3,
106             //~^ ERROR use of deprecated field
107         };
108
109         let _ = x.inherit;
110         //~^ ERROR use of deprecated field
111         let _ = x.override1;
112         //~^ ERROR use of deprecated field
113         let _ = x.override2;
114         //~^ ERROR use of deprecated field
115
116         let Deprecated {
117             //~^ ERROR use of deprecated struct
118             inherit: _,
119             //~^ ERROR use of deprecated field
120             override1: _,
121             //~^ ERROR use of deprecated field
122             override2: _
123             //~^ ERROR use of deprecated field
124         } = x;
125
126         let Deprecated
127             //~^ ERROR use of deprecated struct
128             // the patterns are all fine:
129             { .. } = x;
130
131         let x = Deprecated2(1, 2, 3);
132         //~^ ERROR use of deprecated tuple struct
133
134         let _ = x.0;
135         //~^ ERROR use of deprecated field
136         let _ = x.1;
137         //~^ ERROR use of deprecated field
138         let _ = x.2;
139         //~^ ERROR use of deprecated field
140
141         let Deprecated2
142         //~^ ERROR use of deprecated tuple struct
143             (_,
144              //~^ ERROR use of deprecated field
145              _,
146              //~^ ERROR use of deprecated field
147              _)
148              //~^ ERROR use of deprecated field
149             = x;
150         let Deprecated2
151         //~^ ERROR use of deprecated tuple struct
152             // the patterns are all fine:
153             (..) = x;
154     }
155 }
156
157 mod this_crate {
158     #[stable(feature = "rust1", since = "1.0.0")]
159     struct Stable {
160         inherit: u8,
161         #[unstable(feature = "unstable_test_feature", issue = "none")]
162         override1: u8,
163         #[deprecated(since = "1.0.0", note = "text")]
164         #[unstable(feature = "unstable_test_feature", issue = "none")]
165         override2: u8,
166     }
167
168     #[stable(feature = "rust1", since = "1.0.0")]
169     struct Stable2(u8,
170                    #[stable(feature = "rust1", since = "1.0.0")] u8,
171                    #[unstable(feature = "unstable_test_feature", issue = "none")]
172                    #[deprecated(since = "1.0.0", note = "text")] u8);
173
174     #[unstable(feature = "unstable_test_feature", issue = "none")]
175     struct Unstable {
176         inherit: u8,
177         #[stable(feature = "rust1", since = "1.0.0")]
178         override1: u8,
179         #[deprecated(since = "1.0.0", note = "text")]
180         #[unstable(feature = "unstable_test_feature", issue = "none")]
181         override2: u8,
182     }
183
184     #[unstable(feature = "unstable_test_feature", issue = "none")]
185     struct Unstable2(u8,
186                      #[stable(feature = "rust1", since = "1.0.0")] u8,
187                      #[unstable(feature = "unstable_test_feature", issue = "none")]
188                      #[deprecated(since = "1.0.0", note = "text")] u8);
189
190     #[unstable(feature = "unstable_test_feature", issue = "none")]
191     #[deprecated(since = "1.0.0", note = "text")]
192     struct Deprecated {
193         inherit: u8,
194         #[stable(feature = "rust1", since = "1.0.0")]
195         override1: u8,
196         #[unstable(feature = "unstable_test_feature", issue = "none")]
197         override2: u8,
198     }
199
200     #[unstable(feature = "unstable_test_feature", issue = "none")]
201     #[deprecated(since = "1.0.0", note = "text")]
202     struct Deprecated2(u8,
203                        #[stable(feature = "rust1", since = "1.0.0")] u8,
204                        #[unstable(feature = "unstable_test_feature", issue = "none")] u8);
205
206     pub fn foo() {
207         let x = Stable {
208             inherit: 1,
209             override1: 2,
210             override2: 3,
211             //~^ ERROR use of deprecated field
212         };
213
214         let _ = x.inherit;
215         let _ = x.override1;
216         let _ = x.override2;
217         //~^ ERROR use of deprecated field
218
219         let Stable {
220             inherit: _,
221             override1: _,
222             override2: _
223             //~^ ERROR use of deprecated field
224         } = x;
225         // all fine
226         let Stable { .. } = x;
227
228         let x = Stable2(1, 2, 3);
229
230         let _ = x.0;
231         let _ = x.1;
232         let _ = x.2;
233         //~^ ERROR use of deprecated field
234
235         let Stable2(_,
236                    _,
237                    _)
238             //~^ ERROR use of deprecated field
239             = x;
240         // all fine
241         let Stable2(..) = x;
242
243
244         let x = Unstable {
245             inherit: 1,
246             override1: 2,
247             override2: 3,
248             //~^ ERROR use of deprecated field
249         };
250
251         let _ = x.inherit;
252         let _ = x.override1;
253         let _ = x.override2;
254         //~^ ERROR use of deprecated field
255
256         let Unstable {
257             inherit: _,
258             override1: _,
259             override2: _
260             //~^ ERROR use of deprecated field
261         } = x;
262
263         let Unstable
264             // the patterns are all fine:
265             { .. } = x;
266
267
268         let x = Unstable2(1, 2, 3);
269
270         let _ = x.0;
271         let _ = x.1;
272         let _ = x.2;
273         //~^ ERROR use of deprecated field
274
275         let Unstable2
276             (_,
277              _,
278              _)
279             //~^ ERROR use of deprecated field
280             = x;
281         let Unstable2
282             // the patterns are all fine:
283             (..) = x;
284
285
286         let x = Deprecated {
287             //~^ ERROR use of deprecated struct
288             inherit: 1,
289             //~^ ERROR use of deprecated field
290             override1: 2,
291             //~^ ERROR use of deprecated field
292             override2: 3,
293             //~^ ERROR use of deprecated field
294         };
295
296         let _ = x.inherit;
297         //~^ ERROR use of deprecated field
298         let _ = x.override1;
299         //~^ ERROR use of deprecated field
300         let _ = x.override2;
301         //~^ ERROR use of deprecated field
302
303         let Deprecated {
304             //~^ ERROR use of deprecated struct
305             inherit: _,
306             //~^ ERROR use of deprecated field
307             override1: _,
308             //~^ ERROR use of deprecated field
309             override2: _
310             //~^ ERROR use of deprecated field
311         } = x;
312
313         let Deprecated
314             //~^ ERROR use of deprecated struct
315             // the patterns are all fine:
316             { .. } = x;
317
318         let x = Deprecated2(1, 2, 3);
319         //~^ ERROR use of deprecated tuple struct
320
321         let _ = x.0;
322         //~^ ERROR use of deprecated field
323         let _ = x.1;
324         //~^ ERROR use of deprecated field
325         let _ = x.2;
326         //~^ ERROR use of deprecated field
327
328         let Deprecated2
329         //~^ ERROR use of deprecated tuple struct
330             (_,
331              //~^ ERROR use of deprecated field
332              _,
333              //~^ ERROR use of deprecated field
334              _)
335             //~^ ERROR use of deprecated field
336             = x;
337         let Deprecated2
338         //~^ ERROR use of deprecated tuple struct
339             // the patterns are all fine:
340             (..) = x;
341     }
342 }
343
344 fn main() {}