]>
Commit | Line | Data |
---|---|---|
476ff2be SL |
1 | // Copyright 2013-2014 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.rs | |
12 | // aux-build:inherited_stability.rs | |
13 | // aux-build:stability_cfg1.rs | |
14 | // aux-build:stability_cfg2.rs | |
abe05a73 | 15 | // ignore-tidy-linelength |
476ff2be | 16 | |
3b2f2976 XL |
17 | #![warn(deprecated)] |
18 | #![allow(dead_code, unused_extern_crates)] | |
19 | #![feature(staged_api, test_feature, rustc_attrs)] | |
476ff2be SL |
20 | |
21 | #![stable(feature = "rust1", since = "1.0.0")] | |
22 | ||
23 | #[macro_use] | |
24 | extern crate lint_stability; | |
25 | ||
26 | mod cross_crate { | |
27 | extern crate stability_cfg1; | |
28 | extern crate stability_cfg2; | |
29 | ||
30 | use lint_stability::*; | |
31 | ||
32 | fn test() { | |
33 | type Foo = MethodTester; | |
34 | let foo = MethodTester; | |
35 | ||
abe05a73 XL |
36 | deprecated(); //~ WARN use of deprecated item 'lint_stability::deprecated' |
37 | foo.method_deprecated(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated' | |
38 | Foo::method_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated' | |
39 | <Foo>::method_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated' | |
40 | foo.trait_deprecated(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
41 | Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
42 | <Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
43 | <Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
44 | ||
45 | deprecated_text(); //~ WARN use of deprecated item 'lint_stability::deprecated_text': text | |
46 | foo.method_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_text': text | |
47 | Foo::method_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_text': text | |
48 | <Foo>::method_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_text': text | |
49 | foo.trait_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
50 | Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
51 | <Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
52 | <Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
53 | ||
54 | deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::deprecated_unstable' | |
55 | foo.method_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable' | |
56 | Foo::method_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable' | |
57 | <Foo>::method_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable' | |
58 | foo.trait_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
59 | Trait::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
60 | <Foo>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
61 | <Foo as Trait>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
62 | ||
63 | deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::deprecated_unstable_text': text | |
64 | foo.method_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable_text': text | |
65 | Foo::method_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable_text': text | |
66 | <Foo>::method_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable_text': text | |
67 | foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
68 | Trait::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
69 | <Foo>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
70 | <Foo as Trait>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
476ff2be SL |
71 | |
72 | unstable(); | |
73 | foo.method_unstable(); | |
74 | Foo::method_unstable(&foo); | |
75 | <Foo>::method_unstable(&foo); | |
76 | foo.trait_unstable(); | |
77 | Trait::trait_unstable(&foo); | |
78 | <Foo>::trait_unstable(&foo); | |
79 | <Foo as Trait>::trait_unstable(&foo); | |
80 | ||
81 | unstable_text(); | |
82 | foo.method_unstable_text(); | |
83 | Foo::method_unstable_text(&foo); | |
84 | <Foo>::method_unstable_text(&foo); | |
85 | foo.trait_unstable_text(); | |
86 | Trait::trait_unstable_text(&foo); | |
87 | <Foo>::trait_unstable_text(&foo); | |
88 | <Foo as Trait>::trait_unstable_text(&foo); | |
89 | ||
90 | stable(); | |
91 | foo.method_stable(); | |
92 | Foo::method_stable(&foo); | |
93 | <Foo>::method_stable(&foo); | |
94 | foo.trait_stable(); | |
95 | Trait::trait_stable(&foo); | |
96 | <Foo>::trait_stable(&foo); | |
97 | <Foo as Trait>::trait_stable(&foo); | |
98 | ||
99 | stable_text(); | |
100 | foo.method_stable_text(); | |
101 | Foo::method_stable_text(&foo); | |
102 | <Foo>::method_stable_text(&foo); | |
103 | foo.trait_stable_text(); | |
104 | Trait::trait_stable_text(&foo); | |
105 | <Foo>::trait_stable_text(&foo); | |
106 | <Foo as Trait>::trait_stable_text(&foo); | |
107 | ||
108 | struct S1<T: TraitWithAssociatedTypes>(T::TypeUnstable); | |
109 | struct S2<T: TraitWithAssociatedTypes>(T::TypeDeprecated); | |
abe05a73 | 110 | //~^ WARN use of deprecated item 'lint_stability::TraitWithAssociatedTypes::TypeDeprecated': text |
476ff2be | 111 | |
abe05a73 XL |
112 | let _ = DeprecatedStruct { //~ WARN use of deprecated item 'lint_stability::DeprecatedStruct' |
113 | i: 0 //~ WARN use of deprecated item 'lint_stability::DeprecatedStruct::i' | |
476ff2be SL |
114 | }; |
115 | let _ = DeprecatedUnstableStruct { | |
abe05a73 XL |
116 | //~^ WARN use of deprecated item 'lint_stability::DeprecatedUnstableStruct' |
117 | i: 0 //~ WARN use of deprecated item 'lint_stability::DeprecatedUnstableStruct::i' | |
476ff2be SL |
118 | }; |
119 | let _ = UnstableStruct { i: 0 }; | |
120 | let _ = StableStruct { i: 0 }; | |
121 | ||
abe05a73 XL |
122 | let _ = DeprecatedUnitStruct; //~ WARN use of deprecated item 'lint_stability::DeprecatedUnitStruct' |
123 | let _ = DeprecatedUnstableUnitStruct; //~ WARN use of deprecated item 'lint_stability::DeprecatedUnstableUnitStruct' | |
476ff2be SL |
124 | let _ = UnstableUnitStruct; |
125 | let _ = StableUnitStruct; | |
126 | ||
abe05a73 XL |
127 | let _ = Enum::DeprecatedVariant; //~ WARN use of deprecated item 'lint_stability::Enum::DeprecatedVariant' |
128 | let _ = Enum::DeprecatedUnstableVariant; //~ WARN use of deprecated item 'lint_stability::Enum::DeprecatedUnstableVariant' | |
476ff2be SL |
129 | let _ = Enum::UnstableVariant; |
130 | let _ = Enum::StableVariant; | |
131 | ||
abe05a73 XL |
132 | let _ = DeprecatedTupleStruct (1); //~ WARN use of deprecated item 'lint_stability::DeprecatedTupleStruct' |
133 | let _ = DeprecatedUnstableTupleStruct (1); //~ WARN use of deprecated item 'lint_stability::DeprecatedUnstableTupleStruct' | |
476ff2be SL |
134 | let _ = UnstableTupleStruct (1); |
135 | let _ = StableTupleStruct (1); | |
136 | ||
137 | // At the moment, the lint checker only checks stability in | |
138 | // in the arguments of macros. | |
139 | // Eventually, we will want to lint the contents of the | |
140 | // macro in the module *defining* it. Also, stability levels | |
141 | // on macros themselves are not yet linted. | |
abe05a73 XL |
142 | macro_test_arg!(deprecated_text()); //~ WARN use of deprecated item 'lint_stability::deprecated_text': text |
143 | macro_test_arg!(deprecated_unstable_text()); //~ WARN use of deprecated item 'lint_stability::deprecated_unstable_text': text | |
144 | macro_test_arg!(macro_test_arg!(deprecated_text())); //~ WARN use of deprecated item 'lint_stability::deprecated_text': text | |
476ff2be SL |
145 | } |
146 | ||
147 | fn test_method_param<Foo: Trait>(foo: Foo) { | |
abe05a73 XL |
148 | foo.trait_deprecated(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' |
149 | Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
150 | <Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
151 | <Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' | |
152 | foo.trait_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
153 | Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
154 | <Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
155 | <Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
156 | foo.trait_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
157 | Trait::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
158 | <Foo>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
159 | <Foo as Trait>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
160 | foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
161 | Trait::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
162 | <Foo>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
163 | <Foo as Trait>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
476ff2be SL |
164 | foo.trait_unstable(); |
165 | Trait::trait_unstable(&foo); | |
166 | <Foo>::trait_unstable(&foo); | |
167 | <Foo as Trait>::trait_unstable(&foo); | |
168 | foo.trait_unstable_text(); | |
169 | Trait::trait_unstable_text(&foo); | |
170 | <Foo>::trait_unstable_text(&foo); | |
171 | <Foo as Trait>::trait_unstable_text(&foo); | |
172 | foo.trait_stable(); | |
173 | Trait::trait_stable(&foo); | |
174 | <Foo>::trait_stable(&foo); | |
175 | <Foo as Trait>::trait_stable(&foo); | |
176 | } | |
177 | ||
178 | fn test_method_object(foo: &Trait) { | |
abe05a73 XL |
179 | foo.trait_deprecated(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated' |
180 | foo.trait_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text | |
181 | foo.trait_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable' | |
182 | foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text | |
476ff2be SL |
183 | foo.trait_unstable(); |
184 | foo.trait_unstable_text(); | |
185 | foo.trait_stable(); | |
186 | } | |
187 | ||
188 | struct S; | |
189 | ||
190 | impl UnstableTrait for S { } | |
abe05a73 | 191 | impl DeprecatedTrait for S {} //~ WARN use of deprecated item 'lint_stability::DeprecatedTrait': text |
476ff2be | 192 | trait LocalTrait : UnstableTrait { } |
abe05a73 | 193 | trait LocalTrait2 : DeprecatedTrait { } //~ WARN use of deprecated item 'lint_stability::DeprecatedTrait': text |
476ff2be SL |
194 | |
195 | impl Trait for S { | |
196 | fn trait_stable(&self) {} | |
197 | fn trait_unstable(&self) {} | |
198 | } | |
199 | } | |
200 | ||
201 | mod inheritance { | |
202 | extern crate inherited_stability; | |
203 | use self::inherited_stability::*; | |
204 | ||
205 | fn test_inheritance() { | |
206 | unstable(); | |
207 | stable(); | |
208 | ||
209 | stable_mod::unstable(); | |
210 | stable_mod::stable(); | |
211 | ||
abe05a73 | 212 | unstable_mod::deprecated(); //~ WARN use of deprecated item 'inheritance::inherited_stability::unstable_mod::deprecated': text |
476ff2be SL |
213 | unstable_mod::unstable(); |
214 | ||
215 | let _ = Unstable::UnstableVariant; | |
216 | let _ = Unstable::StableVariant; | |
217 | ||
218 | let x: usize = 0; | |
219 | x.unstable(); | |
220 | x.stable(); | |
221 | } | |
222 | } | |
223 | ||
224 | mod this_crate { | |
225 | #[unstable(feature = "test_feature", issue = "0")] | |
226 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
227 | pub fn deprecated() {} | |
228 | #[unstable(feature = "test_feature", issue = "0")] | |
229 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
230 | pub fn deprecated_text() {} | |
231 | ||
232 | #[unstable(feature = "test_feature", issue = "0")] | |
233 | pub fn unstable() {} | |
234 | #[unstable(feature = "test_feature", reason = "text", issue = "0")] | |
235 | pub fn unstable_text() {} | |
236 | ||
237 | #[stable(feature = "rust1", since = "1.0.0")] | |
238 | pub fn stable() {} | |
239 | #[stable(feature = "rust1", since = "1.0.0")] | |
240 | pub fn stable_text() {} | |
241 | ||
242 | #[stable(feature = "rust1", since = "1.0.0")] | |
243 | pub struct MethodTester; | |
244 | ||
245 | impl MethodTester { | |
246 | #[unstable(feature = "test_feature", issue = "0")] | |
247 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
248 | pub fn method_deprecated(&self) {} | |
249 | #[unstable(feature = "test_feature", issue = "0")] | |
250 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
251 | pub fn method_deprecated_text(&self) {} | |
252 | ||
253 | #[unstable(feature = "test_feature", issue = "0")] | |
254 | pub fn method_unstable(&self) {} | |
255 | #[unstable(feature = "test_feature", reason = "text", issue = "0")] | |
256 | pub fn method_unstable_text(&self) {} | |
257 | ||
258 | #[stable(feature = "rust1", since = "1.0.0")] | |
259 | pub fn method_stable(&self) {} | |
260 | #[stable(feature = "rust1", since = "1.0.0")] | |
261 | pub fn method_stable_text(&self) {} | |
262 | } | |
263 | ||
264 | pub trait Trait { | |
265 | #[unstable(feature = "test_feature", issue = "0")] | |
266 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
267 | fn trait_deprecated(&self) {} | |
268 | #[unstable(feature = "test_feature", issue = "0")] | |
269 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
270 | fn trait_deprecated_text(&self) {} | |
271 | ||
272 | #[unstable(feature = "test_feature", issue = "0")] | |
273 | fn trait_unstable(&self) {} | |
274 | #[unstable(feature = "test_feature", reason = "text", issue = "0")] | |
275 | fn trait_unstable_text(&self) {} | |
276 | ||
277 | #[stable(feature = "rust1", since = "1.0.0")] | |
278 | fn trait_stable(&self) {} | |
279 | #[stable(feature = "rust1", since = "1.0.0")] | |
280 | fn trait_stable_text(&self) {} | |
281 | } | |
282 | ||
283 | impl Trait for MethodTester {} | |
284 | ||
285 | #[unstable(feature = "test_feature", issue = "0")] | |
286 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
287 | pub struct DeprecatedStruct { | |
288 | #[stable(feature = "test_feature", since = "1.0.0")] i: isize | |
289 | } | |
290 | #[unstable(feature = "test_feature", issue = "0")] | |
291 | pub struct UnstableStruct { | |
292 | #[stable(feature = "test_feature", since = "1.0.0")] i: isize | |
293 | } | |
294 | #[stable(feature = "rust1", since = "1.0.0")] | |
295 | pub struct StableStruct { | |
296 | #[stable(feature = "test_feature", since = "1.0.0")] i: isize | |
297 | } | |
298 | ||
299 | #[unstable(feature = "test_feature", issue = "0")] | |
300 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
301 | pub struct DeprecatedUnitStruct; | |
302 | #[unstable(feature = "test_feature", issue = "0")] | |
303 | pub struct UnstableUnitStruct; | |
304 | #[stable(feature = "rust1", since = "1.0.0")] | |
305 | pub struct StableUnitStruct; | |
306 | ||
307 | pub enum Enum { | |
308 | #[unstable(feature = "test_feature", issue = "0")] | |
309 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
310 | DeprecatedVariant, | |
311 | #[unstable(feature = "test_feature", issue = "0")] | |
312 | UnstableVariant, | |
313 | ||
314 | #[stable(feature = "rust1", since = "1.0.0")] | |
315 | StableVariant, | |
316 | } | |
317 | ||
318 | #[unstable(feature = "test_feature", issue = "0")] | |
319 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
320 | pub struct DeprecatedTupleStruct(isize); | |
321 | #[unstable(feature = "test_feature", issue = "0")] | |
322 | pub struct UnstableTupleStruct(isize); | |
323 | #[stable(feature = "rust1", since = "1.0.0")] | |
324 | pub struct StableTupleStruct(isize); | |
325 | ||
326 | fn test() { | |
327 | // Only the deprecated cases of the following should generate | |
328 | // errors, because other stability attributes now have meaning | |
329 | // only *across* crates, not within a single crate. | |
330 | ||
331 | type Foo = MethodTester; | |
332 | let foo = MethodTester; | |
333 | ||
abe05a73 XL |
334 | deprecated(); //~ WARN use of deprecated item 'this_crate::deprecated' |
335 | foo.method_deprecated(); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated' | |
336 | Foo::method_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated' | |
337 | <Foo>::method_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated' | |
338 | foo.trait_deprecated(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
339 | Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
340 | <Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
341 | <Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
342 | ||
343 | deprecated_text(); //~ WARN use of deprecated item 'this_crate::deprecated_text': text | |
344 | foo.method_deprecated_text(); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text | |
345 | Foo::method_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text | |
346 | <Foo>::method_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text | |
347 | foo.trait_deprecated_text(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
348 | Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
349 | <Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
350 | <Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
476ff2be SL |
351 | |
352 | unstable(); | |
353 | foo.method_unstable(); | |
354 | Foo::method_unstable(&foo); | |
355 | <Foo>::method_unstable(&foo); | |
356 | foo.trait_unstable(); | |
357 | Trait::trait_unstable(&foo); | |
358 | <Foo>::trait_unstable(&foo); | |
359 | <Foo as Trait>::trait_unstable(&foo); | |
360 | ||
361 | unstable_text(); | |
362 | foo.method_unstable_text(); | |
363 | Foo::method_unstable_text(&foo); | |
364 | <Foo>::method_unstable_text(&foo); | |
365 | foo.trait_unstable_text(); | |
366 | Trait::trait_unstable_text(&foo); | |
367 | <Foo>::trait_unstable_text(&foo); | |
368 | <Foo as Trait>::trait_unstable_text(&foo); | |
369 | ||
370 | stable(); | |
371 | foo.method_stable(); | |
372 | Foo::method_stable(&foo); | |
373 | <Foo>::method_stable(&foo); | |
374 | foo.trait_stable(); | |
375 | Trait::trait_stable(&foo); | |
376 | <Foo>::trait_stable(&foo); | |
377 | <Foo as Trait>::trait_stable(&foo); | |
378 | ||
379 | stable_text(); | |
380 | foo.method_stable_text(); | |
381 | Foo::method_stable_text(&foo); | |
382 | <Foo>::method_stable_text(&foo); | |
383 | foo.trait_stable_text(); | |
384 | Trait::trait_stable_text(&foo); | |
385 | <Foo>::trait_stable_text(&foo); | |
386 | <Foo as Trait>::trait_stable_text(&foo); | |
387 | ||
388 | let _ = DeprecatedStruct { | |
abe05a73 XL |
389 | //~^ WARN use of deprecated item 'this_crate::DeprecatedStruct' |
390 | i: 0 //~ WARN use of deprecated item 'this_crate::DeprecatedStruct::i' | |
476ff2be SL |
391 | }; |
392 | let _ = UnstableStruct { i: 0 }; | |
393 | let _ = StableStruct { i: 0 }; | |
394 | ||
abe05a73 | 395 | let _ = DeprecatedUnitStruct; //~ WARN use of deprecated item 'this_crate::DeprecatedUnitStruct' |
476ff2be SL |
396 | let _ = UnstableUnitStruct; |
397 | let _ = StableUnitStruct; | |
398 | ||
abe05a73 | 399 | let _ = Enum::DeprecatedVariant; //~ WARN use of deprecated item 'this_crate::Enum::DeprecatedVariant' |
476ff2be SL |
400 | let _ = Enum::UnstableVariant; |
401 | let _ = Enum::StableVariant; | |
402 | ||
abe05a73 | 403 | let _ = DeprecatedTupleStruct (1); //~ WARN use of deprecated item 'this_crate::DeprecatedTupleStruct' |
476ff2be SL |
404 | let _ = UnstableTupleStruct (1); |
405 | let _ = StableTupleStruct (1); | |
406 | } | |
407 | ||
408 | fn test_method_param<Foo: Trait>(foo: Foo) { | |
abe05a73 XL |
409 | foo.trait_deprecated(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' |
410 | Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
411 | <Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
412 | <Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' | |
413 | foo.trait_deprecated_text(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
414 | Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
415 | <Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
416 | <Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
476ff2be SL |
417 | foo.trait_unstable(); |
418 | Trait::trait_unstable(&foo); | |
419 | <Foo>::trait_unstable(&foo); | |
420 | <Foo as Trait>::trait_unstable(&foo); | |
421 | foo.trait_unstable_text(); | |
422 | Trait::trait_unstable_text(&foo); | |
423 | <Foo>::trait_unstable_text(&foo); | |
424 | <Foo as Trait>::trait_unstable_text(&foo); | |
425 | foo.trait_stable(); | |
426 | Trait::trait_stable(&foo); | |
427 | <Foo>::trait_stable(&foo); | |
428 | <Foo as Trait>::trait_stable(&foo); | |
429 | } | |
430 | ||
431 | fn test_method_object(foo: &Trait) { | |
abe05a73 XL |
432 | foo.trait_deprecated(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated' |
433 | foo.trait_deprecated_text(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text | |
476ff2be SL |
434 | foo.trait_unstable(); |
435 | foo.trait_unstable_text(); | |
436 | foo.trait_stable(); | |
437 | } | |
438 | ||
439 | #[unstable(feature = "test_feature", issue = "0")] | |
440 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
441 | fn test_fn_body() { | |
442 | fn fn_in_body() {} | |
abe05a73 | 443 | fn_in_body(); //~ WARN use of deprecated item 'this_crate::test_fn_body::fn_in_body': text |
476ff2be SL |
444 | } |
445 | ||
446 | impl MethodTester { | |
447 | #[unstable(feature = "test_feature", issue = "0")] | |
448 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
449 | fn test_method_body(&self) { | |
450 | fn fn_in_body() {} | |
abe05a73 | 451 | fn_in_body(); //~ WARN use of deprecated item 'this_crate::MethodTester::test_method_body::fn_in_body': text |
476ff2be SL |
452 | } |
453 | } | |
454 | ||
455 | #[unstable(feature = "test_feature", issue = "0")] | |
456 | #[rustc_deprecated(since = "1.0.0", reason = "text")] | |
457 | pub trait DeprecatedTrait { | |
458 | fn dummy(&self) { } | |
459 | } | |
460 | ||
461 | struct S; | |
462 | ||
abe05a73 | 463 | impl DeprecatedTrait for S { } //~ WARN use of deprecated item 'this_crate::DeprecatedTrait' |
476ff2be | 464 | |
abe05a73 | 465 | trait LocalTrait : DeprecatedTrait { } //~ WARN use of deprecated item 'this_crate::DeprecatedTrait' |
476ff2be SL |
466 | } |
467 | ||
3b2f2976 | 468 | #[rustc_error] fn main() {} //~ ERROR: compilation successful |