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