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