// run-rustfix | |
// aux-build:macro_rules.rs | |
#![warn(clippy::toplevel_ref_arg)] | |
#![allow(clippy::uninlined_format_args)] | |
#[macro_use] | |
extern crate macro_rules; | |
macro_rules! gen_binding { | |
() => { | |
let _y = &42; | |
}; | |
} | |
fn main() { | |
// Closures should not warn | |
let y = |ref x| println!("{:?}", x); | |
y(1u8); | |
let _x = &1; | |
let _y: &(&_, u8) = &(&1, 2); | |
let _z = &(1 + 2); | |
let _z = &mut (1 + 2); | |
let (ref x, _) = (1, 2); // ok, not top level | |
println!("The answer is {}.", x); | |
let _x = &vec![1, 2, 3]; | |
// Make sure that allowing the lint works | |
#[allow(clippy::toplevel_ref_arg)] | |
let ref mut _x = 1_234_543; | |
// ok | |
for ref _x in 0..10 {} | |
// lint in macro | |
#[allow(unused)] | |
{ | |
gen_binding!(); | |
} | |
// do not lint in external macro | |
{ | |
ref_arg_binding!(); | |
} | |
} |