//@run-rustfix #![allow(unused)] #![warn(clippy::match_as_ref)] fn match_as_ref() { let owned: Option<()> = None; let borrowed: Option<&()> = owned.as_ref(); let mut mut_owned: Option<()> = None; let borrow_mut: Option<&mut ()> = mut_owned.as_mut(); } mod issue4437 { use std::error::Error; use std::fmt; use std::num::ParseIntError; #[derive(Debug)] struct E { source: Option, } impl Error for E { fn source(&self) -> Option<&(dyn Error + 'static)> { self.source.as_ref().map(|x| x as _) } } impl fmt::Display for E { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { unimplemented!() } } } fn main() { // Don't lint let _ = match Some(0) { #[cfg(feature = "foo")] Some(ref x) if *x > 50 => None, Some(ref x) => Some(x), None => None, }; }