mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| #![allow(unused_variables)]
 | |
| #![allow(non_camel_case_types)]
 | |
| #![allow(clashing_extern_declarations)]
 | |
| #![deny(dead_code)]
 | |
| 
 | |
| #![crate_type="lib"]
 | |
| 
 | |
| 
 | |
| pub use extern_foo as x;
 | |
| extern "C" {
 | |
|     pub fn extern_foo();
 | |
| }
 | |
| 
 | |
| struct Foo; //~ ERROR: struct `Foo` is never constructed
 | |
| impl Foo {
 | |
|     fn foo(&self) { //~ ERROR: method `foo` is never used
 | |
|         bar()
 | |
|     }
 | |
| }
 | |
| 
 | |
| fn bar() { //~ ERROR: function `bar` is never used
 | |
|     fn baz() {}
 | |
| 
 | |
|     Foo.foo();
 | |
|     baz();
 | |
| }
 | |
| 
 | |
| // no warning
 | |
| struct Foo2;
 | |
| impl Foo2 { fn foo2(&self) { bar2() } }
 | |
| fn bar2() {
 | |
|     fn baz2() {}
 | |
| 
 | |
|     Foo2.foo2();
 | |
|     baz2();
 | |
| }
 | |
| 
 | |
| pub fn pub_fn() {
 | |
|     let foo2_struct = Foo2;
 | |
|     foo2_struct.foo2();
 | |
| 
 | |
|     blah::baz();
 | |
| }
 | |
| 
 | |
| mod blah {
 | |
|     // not warned because it's used in the parameter of `free` and return of
 | |
|     // `malloc` below, which are also used.
 | |
|     enum c_void {}
 | |
| 
 | |
|     extern "C" {
 | |
|         fn free(p: *const c_void);
 | |
|         fn malloc(size: usize) -> *const c_void;
 | |
|     }
 | |
| 
 | |
|     pub fn baz() {
 | |
|         unsafe { free(malloc(4)); }
 | |
|     }
 | |
| }
 | |
| 
 | |
| enum c_void {} //~ ERROR: enum `c_void` is never used
 | |
| extern "C" {
 | |
|     fn free(p: *const c_void); //~ ERROR: function `free` is never used
 | |
| }
 | |
| 
 | |
| // Check provided method
 | |
| mod inner {
 | |
|     pub trait Trait {
 | |
|         fn f(&self) { f(); }
 | |
|     }
 | |
| 
 | |
|     impl Trait for isize {}
 | |
| 
 | |
|     fn f() {}
 | |
| }
 | |
| 
 | |
| fn anon_const() -> [(); {
 | |
|     fn blah() {} //~ ERROR: function `blah` is never used
 | |
|     1
 | |
| }] {
 | |
|     [(); {
 | |
|         fn blah() {} //~ ERROR: function `blah` is never used
 | |
|         1
 | |
|     }]
 | |
| }
 | |
| 
 | |
| pub fn foo() {
 | |
|     let a: &dyn inner::Trait = &1_isize;
 | |
|     a.f();
 | |
|     anon_const();
 | |
| }
 | 
