| #![warn(clippy::map_or_identity)] |
| |
| mod issue15801 { |
| |
| fn foo(opt: Option<i32>, default: i32) -> i32 { |
| opt.unwrap_or(default) |
| //~^ map_or_identity |
| } |
| |
| fn bar(res: Result<i32, &str>, default: i32) -> i32 { |
| res.unwrap_or(default) |
| //~^ map_or_identity |
| } |
| |
| fn with_deref(opt: &Option<i32>, default: i32) -> i32 { |
| opt.unwrap_or(default) |
| //~^ map_or_identity |
| } |
| } |
| |
| mod macros { |
| macro_rules! mac { |
| ($e:expr) => {{ $e }}; |
| } |
| |
| fn option_with_macro(opt: Option<i32>) -> i32 { |
| opt.unwrap_or(mac!(42)) |
| //~^ map_or_identity |
| } |
| |
| fn result_with_macro(res: Result<i32, &str>) -> i32 { |
| res.unwrap_or(mac!(42)) |
| //~^ map_or_identity |
| } |
| |
| fn option_with_macro_receiver(opt: Option<i32>) -> i32 { |
| mac!(opt).unwrap_or(42) |
| //~^ map_or_identity |
| } |
| |
| fn result_with_macro_receiver(res: Result<i32, &str>) -> i32 { |
| mac!(res).unwrap_or(42) |
| //~^ map_or_identity |
| } |
| |
| // These should not lint because the method call comes from a macro expansion |
| macro_rules! map_or_mac { |
| ($e:expr, $d:expr, $f:expr) => { |
| $e.map_or($d, $f) |
| }; |
| } |
| |
| fn option_with_macro_call(opt: Option<i32>) -> i32 { |
| map_or_mac!(opt, 42, |x| x) |
| } |
| |
| fn result_with_macro_call(res: Result<i32, &str>) -> i32 { |
| map_or_mac!(res, 42, |x| x) |
| } |
| } |
| |
| fn main() { |
| // test code goes here |
| } |