| #![allow(unused_variables)] | |
| #![deny(dead_code)] | |
| #![feature(rustc_attrs)] | |
| struct Foo; | |
| trait Bar { | |
| fn bar1(&self); | |
| fn bar2(&self) { | |
| self.bar1(); | |
| } | |
| } | |
| impl Bar for Foo { | |
| fn bar1(&self) { | |
| live_fn(); | |
| } | |
| } | |
| fn live_fn() {} | |
| fn dead_fn() {} //~ ERROR: function `dead_fn` is never used | |
| fn used_fn() {} | |
| #[rustc_main] | |
| fn actual_main() { | |
| used_fn(); | |
| let foo = Foo; | |
| foo.bar2(); | |
| } | |
| // this is not main | |
| fn main() { //~ ERROR: function `main` is never used | |
| dead_fn(); | |
| } |