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