//@revisions: private all //@[private] rustc-env:CLIPPY_CONF_DIR=tests/ui/ref_option/private //@[all] rustc-env:CLIPPY_CONF_DIR=tests/ui/ref_option/all #![allow(unused, clippy::needless_lifetimes, clippy::borrowed_box)] #![warn(clippy::ref_option)] fn opt_u8(a: &Option) {} fn opt_gen(a: &Option) {} fn opt_string(a: &std::option::Option) {} fn ret_string<'a>(p: &'a str) -> &'a Option { panic!() } fn ret_string_static() -> &'static Option { panic!() } fn mult_string(a: &Option, b: &Option>) {} fn ret_box<'a>() -> &'a Option> { panic!() } pub fn pub_opt_string(a: &Option) {} pub fn pub_mult_string(a: &Option, b: &Option>) {} pub trait PubTrait { fn pub_trait_opt(&self, a: &Option>); fn pub_trait_ret(&self) -> &Option>; } trait PrivateTrait { fn trait_opt(&self, a: &Option); fn trait_ret(&self) -> &Option; } pub struct PubStruct; impl PubStruct { pub fn pub_opt_params(&self, a: &Option<()>) {} pub fn pub_opt_ret(&self) -> &Option { panic!() } fn private_opt_params(&self, a: &Option<()>) {} fn private_opt_ret(&self) -> &Option { panic!() } } // valid, don't change fn mut_u8(a: &mut Option) {} pub fn pub_mut_u8(a: &mut Option) {} // might be good to catch in the future fn mut_u8_ref(a: &mut &Option) {} pub fn pub_mut_u8_ref(a: &mut &Option) {} fn lambdas() { // Not handled for now, not sure if we should let x = |a: &Option| {}; let x = |a: &Option| -> &Option { panic!() }; } fn main() {}