]> git.lizzy.rs Git - rust.git/blob - src/test/compile-fail/lint-dead-code-3.rs
Convert most code to new inner attribute syntax.
[rust.git] / src / test / compile-fail / lint-dead-code-3.rs
1 // Copyright 2013 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 #![allow(unused_variable)]
12 #![allow(non_camel_case_types)]
13 #![deny(dead_code)]
14
15 #![crate_type="lib"]
16
17 struct Foo; //~ ERROR: code is never used
18 impl Foo {
19     fn foo(&self) { //~ ERROR: code is never used
20         bar()
21     }
22 }
23
24 fn bar() { //~ ERROR: code is never used
25     fn baz() {} //~ ERROR: code is never used
26
27     Foo.foo();
28     baz();
29 }
30
31 // no warning
32 struct Foo2;
33 impl Foo2 { fn foo2(&self) { bar2() } }
34 fn bar2() {
35     fn baz2() {}
36
37     Foo2.foo2();
38     baz2();
39 }
40
41 pub fn pub_fn() {
42     let foo2_struct = Foo2;
43     foo2_struct.foo2();
44
45     blah::baz();
46 }
47
48 mod blah {
49     use std::libc::size_t;
50     // not warned because it's used in the parameter of `free` and return of
51     // `malloc` below, which are also used.
52     enum c_void {}
53
54     extern {
55         fn free(p: *c_void);
56         fn malloc(size: size_t) -> *c_void;
57     }
58
59     pub fn baz() {
60         unsafe { free(malloc(4)); }
61     }
62 }
63
64 enum c_void {} //~ ERROR: code is never used
65 extern {
66     fn free(p: *c_void); //~ ERROR: code is never used
67 }
68
69 // Check provided method
70 mod inner {
71     pub trait Trait {
72         fn f(&self) { f(); }
73     }
74
75     impl Trait for int {}
76
77     fn f() {}
78 }
79
80 pub fn foo() {
81     let a = &1 as &inner::Trait;
82     a.f();
83 }