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