]> git.proxmox.com Git - rustc.git/blame - src/test/compile-fail/lint-stability-deprecated.rs
New upstream version 1.23.0+dfsg1
[rustc.git] / src / test / compile-fail / lint-stability-deprecated.rs
CommitLineData
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]
24extern crate lint_stability;
25
26mod 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
201mod 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
224mod 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