|  | //@ check-fail | 
|  | //@ run-rustfix | 
|  |  | 
|  | #![deny(dropping_references)] | 
|  |  | 
|  | struct SomeStruct; | 
|  |  | 
|  | fn main() { | 
|  | let _ = &SomeStruct; //~ ERROR calls to `std::mem::drop` | 
|  |  | 
|  | let mut owned1 = SomeStruct; | 
|  | let _ = &owned1; //~ ERROR calls to `std::mem::drop` | 
|  | let _ = &&owned1; //~ ERROR calls to `std::mem::drop` | 
|  | let _ = &mut owned1; //~ ERROR calls to `std::mem::drop` | 
|  | drop(owned1); | 
|  |  | 
|  | let reference1 = &SomeStruct; | 
|  | let _ = reference1; //~ ERROR calls to `std::mem::drop` | 
|  |  | 
|  | let reference2 = &mut SomeStruct; | 
|  | let _ = reference2; //~ ERROR calls to `std::mem::drop` | 
|  |  | 
|  | let ref reference3 = SomeStruct; | 
|  | let _ = reference3; //~ ERROR calls to `std::mem::drop` | 
|  | } | 
|  |  | 
|  | #[allow(dead_code)] | 
|  | fn test_generic_fn_drop<T>(val: T) { | 
|  | let _ = &val; //~ ERROR calls to `std::mem::drop` | 
|  | drop(val); | 
|  | } |