]>
Commit | Line | Data |
---|---|---|
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] | |
13 | extern crate lint_stability; | |
14 | ||
15 | mod 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 | ||
195 | mod 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 | ||
218 | mod 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 | 462 | fn main() {} |