]>
git.proxmox.com Git - rustc.git/blob - src/test/compile-fail/deprecation-lint.rs
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.
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.
11 // aux-build:deprecation-lint.rs
17 extern crate deprecation_lint
;
20 use deprecation_lint
::*;
23 type Foo
= MethodTester
;
24 let foo
= MethodTester
;
26 deprecated(); //~ ERROR use of deprecated item
27 foo
.method_deprecated(); //~ ERROR use of deprecated item
28 Foo
::method_deprecated(&foo
); //~ ERROR use of deprecated item
29 <Foo
>::method_deprecated(&foo
); //~ ERROR use of deprecated item
30 foo
.trait_deprecated(); //~ ERROR use of deprecated item
31 Trait
::trait_deprecated(&foo
); //~ ERROR use of deprecated item
32 <Foo
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
33 <Foo
as Trait
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
35 deprecated_text(); //~ ERROR use of deprecated item: text
36 foo
.method_deprecated_text(); //~ ERROR use of deprecated item: text
37 Foo
::method_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
38 <Foo
>::method_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
39 foo
.trait_deprecated_text(); //~ ERROR use of deprecated item: text
40 Trait
::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
41 <Foo
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
42 <Foo
as Trait
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
44 let _
= DeprecatedStruct
{ //~ ERROR use of deprecated item
45 i
: 0 //~ ERROR use of deprecated item
48 let _
= DeprecatedUnitStruct
; //~ ERROR use of deprecated item
50 let _
= Enum
::DeprecatedVariant
; //~ ERROR use of deprecated item
52 let _
= DeprecatedTupleStruct (1); //~ ERROR use of deprecated item
54 // At the moment, the lint checker only checks stability in
55 // in the arguments of macros.
56 // Eventually, we will want to lint the contents of the
57 // macro in the module *defining* it. Also, stability levels
58 // on macros themselves are not yet linted.
59 macro_test_arg
!(deprecated_text()); //~ ERROR use of deprecated item: text
60 macro_test_arg
!(macro_test_arg
!(deprecated_text())); //~ ERROR use of deprecated item: text
63 fn test_method_param
<Foo
: Trait
>(foo
: Foo
) {
64 foo
.trait_deprecated(); //~ ERROR use of deprecated item
65 Trait
::trait_deprecated(&foo
); //~ ERROR use of deprecated item
66 <Foo
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
67 <Foo
as Trait
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
68 foo
.trait_deprecated_text(); //~ ERROR use of deprecated item: text
69 Trait
::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
70 <Foo
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
71 <Foo
as Trait
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
74 fn test_method_object(foo
: &Trait
) {
75 foo
.trait_deprecated(); //~ ERROR use of deprecated item
76 foo
.trait_deprecated_text(); //~ ERROR use of deprecated item: text
81 impl DeprecatedTrait
for S {}
//~ ERROR use of deprecated item: text
82 trait LocalTrait
: DeprecatedTrait { }
//~ ERROR use of deprecated item: text
87 //~^ ERROR use of deprecated item
91 //~^ ERROR use of deprecated item
95 //~^ ERROR use of deprecated item
98 let Stable { .. }
= x
;
100 let x
= Stable2(1, 2, 3);
103 //~^ ERROR use of deprecated item
108 //~^ ERROR use of deprecated item
114 //~^ ERROR use of deprecated item
116 //~^ ERROR use of deprecated item
120 //~^ ERROR use of deprecated item
123 //~^ ERROR use of deprecated item
125 //~^ ERROR use of deprecated item
129 //~^ ERROR use of deprecated item
132 let x
= Deprecated2(1, 2, 3);
133 //~^ ERROR use of deprecated item
136 //~^ ERROR use of deprecated item
138 //~^ ERROR use of deprecated item
140 //~^ ERROR use of deprecated item
143 //~^ ERROR use of deprecated item
145 //~^ ERROR use of deprecated item
147 //~^ ERROR use of deprecated item
149 //~^ ERROR use of deprecated item
152 //~^ ERROR use of deprecated item
153 // the patterns are all fine:
159 use deprecation_lint
::*;
161 fn test_inheritance() {
162 deprecated_mod
::deprecated(); //~ ERROR use of deprecated item
167 #[deprecated(since = "1.0.0", note = "text")]
168 pub fn deprecated() {}
169 #[deprecated(since = "1.0.0", note = "text")]
170 pub fn deprecated_text() {}
172 pub struct MethodTester
;
175 #[deprecated(since = "1.0.0", note = "text")]
176 pub fn method_deprecated(&self) {}
177 #[deprecated(since = "1.0.0", note = "text")]
178 pub fn method_deprecated_text(&self) {}
182 #[deprecated(since = "1.0.0", note = "text")]
183 fn trait_deprecated(&self) {}
184 #[deprecated(since = "1.0.0", note = "text")]
185 fn trait_deprecated_text(&self) {}
188 impl Trait
for MethodTester {}
190 #[deprecated(since = "1.0.0", note = "text")]
191 pub struct DeprecatedStruct
{
194 pub struct UnstableStruct
{
197 pub struct StableStruct
{
201 #[deprecated(since = "1.0.0", note = "text")]
202 pub struct DeprecatedUnitStruct
;
205 #[deprecated(since = "1.0.0", note = "text")]
209 #[deprecated(since = "1.0.0", note = "text")]
210 pub struct DeprecatedTupleStruct(isize);
213 // Only the deprecated cases of the following should generate
214 // errors, because other stability attributes now have meaning
215 // only *across* crates, not within a single crate.
217 type Foo
= MethodTester
;
218 let foo
= MethodTester
;
220 deprecated(); //~ ERROR use of deprecated item
221 foo
.method_deprecated(); //~ ERROR use of deprecated item
222 Foo
::method_deprecated(&foo
); //~ ERROR use of deprecated item
223 <Foo
>::method_deprecated(&foo
); //~ ERROR use of deprecated item
224 foo
.trait_deprecated(); //~ ERROR use of deprecated item
225 Trait
::trait_deprecated(&foo
); //~ ERROR use of deprecated item
226 <Foo
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
227 <Foo
as Trait
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
229 deprecated_text(); //~ ERROR use of deprecated item: text
230 foo
.method_deprecated_text(); //~ ERROR use of deprecated item: text
231 Foo
::method_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
232 <Foo
>::method_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
233 foo
.trait_deprecated_text(); //~ ERROR use of deprecated item: text
234 Trait
::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
235 <Foo
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
236 <Foo
as Trait
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
238 let _
= DeprecatedStruct
{
239 //~^ ERROR use of deprecated item
240 i
: 0 //~ ERROR use of deprecated item
243 let _
= DeprecatedUnitStruct
; //~ ERROR use of deprecated item
245 let _
= Enum
::DeprecatedVariant
; //~ ERROR use of deprecated item
247 let _
= DeprecatedTupleStruct (1); //~ ERROR use of deprecated item
250 fn test_method_param
<Foo
: Trait
>(foo
: Foo
) {
251 foo
.trait_deprecated(); //~ ERROR use of deprecated item
252 Trait
::trait_deprecated(&foo
); //~ ERROR use of deprecated item
253 <Foo
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
254 <Foo
as Trait
>::trait_deprecated(&foo
); //~ ERROR use of deprecated item
255 foo
.trait_deprecated_text(); //~ ERROR use of deprecated item: text
256 Trait
::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
257 <Foo
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
258 <Foo
as Trait
>::trait_deprecated_text(&foo
); //~ ERROR use of deprecated item: text
261 fn test_method_object(foo
: &Trait
) {
262 foo
.trait_deprecated(); //~ ERROR use of deprecated item
263 foo
.trait_deprecated_text(); //~ ERROR use of deprecated item: text
266 #[deprecated(since = "1.0.0", note = "text")]
273 #[deprecated(since = "1.0.0", note = "text")]
274 fn test_method_body(&self) {
280 #[deprecated(since = "1.0.0", note = "text")]
281 pub trait DeprecatedTrait
{
287 impl DeprecatedTrait
for S { }
//~ ERROR use of deprecated item
289 trait LocalTrait
: DeprecatedTrait { }
//~ ERROR use of deprecated item
294 #[deprecated(since = "1.0.0", note = "text")]
300 #[deprecated(since = "1.0.0", note = "text")] u8);
302 #[deprecated(since = "1.0.0", note = "text")]
307 #[deprecated(since = "1.0.0", note = "text")]
308 struct Deprecated2(u8,
315 //~^ ERROR use of deprecated item
319 //~^ ERROR use of deprecated item
323 //~^ ERROR use of deprecated item
326 let Stable { .. }
= x
;
328 let x
= Stable2(1, 2, 3);
331 //~^ ERROR use of deprecated item
336 //~^ ERROR use of deprecated item
342 //~^ ERROR use of deprecated item
344 //~^ ERROR use of deprecated item
348 //~^ ERROR use of deprecated item
351 //~^ ERROR use of deprecated item
353 //~^ ERROR use of deprecated item
357 //~^ ERROR use of deprecated item
358 // the patterns are all fine:
361 let x
= Deprecated2(1, 2, 3);
362 //~^ ERROR use of deprecated item
365 //~^ ERROR use of deprecated item
367 //~^ ERROR use of deprecated item
369 //~^ ERROR use of deprecated item
372 //~^ ERROR use of deprecated item
374 //~^ ERROR use of deprecated item
376 //~^ ERROR use of deprecated item
378 //~^ ERROR use of deprecated item
381 //~^ ERROR use of deprecated item
382 // the patterns are all fine: