@@ -2426,7 +2426,7 @@ declare_clippy_lint! {
2426
2426
///
2427
2427
/// ### Limitations
2428
2428
/// This lint currently only looks for usages of
2429
- /// `.then_some(..).unwrap_or(..)` and `.then(..).unwrap_or (..)`, but will be expanded
2429
+ /// `.{then, then_some} (..).{ unwrap_or, unwrap_or_else, unwrap_or_default} (..)`, but will be expanded
2430
2430
/// to account for similar patterns.
2431
2431
///
2432
2432
/// ### Example
@@ -5419,15 +5419,21 @@ impl Methods {
5419
5419
option_map_unwrap_or:: check ( cx, expr, m_recv, m_arg, recv, u_arg, span, self . msrv ) ;
5420
5420
} ,
5421
5421
Some ( ( then_method @ ( "then" | "then_some" ) , t_recv, [ t_arg] , _, _) ) => {
5422
- obfuscated_if_else:: check ( cx, expr, t_recv, t_arg, u_arg, then_method, "unwrap_or" ) ;
5422
+ obfuscated_if_else:: check ( cx, expr, t_recv, t_arg, Some ( u_arg) , then_method, "unwrap_or" ) ;
5423
5423
} ,
5424
5424
_ => { } ,
5425
5425
}
5426
5426
unnecessary_literal_unwrap:: check ( cx, expr, recv, name, args) ;
5427
5427
} ,
5428
5428
( "unwrap_or_default" , [ ] ) => {
5429
- if let Some ( ( "map" , m_recv, [ arg] , span, _) ) = method_call ( recv) {
5430
- manual_is_variant_and:: check ( cx, expr, m_recv, arg, span, self . msrv ) ;
5429
+ match method_call ( recv) {
5430
+ Some ( ( "map" , m_recv, [ arg] , span, _) ) => {
5431
+ manual_is_variant_and:: check ( cx, expr, m_recv, arg, span, self . msrv ) ;
5432
+ } ,
5433
+ Some ( ( then_method @ ( "then" | "then_some" ) , t_recv, [ t_arg] , _, _) ) => {
5434
+ obfuscated_if_else:: check ( cx, expr, t_recv, t_arg, None , then_method, "unwrap_or_default" ) ;
5435
+ } ,
5436
+ _ => { } ,
5431
5437
}
5432
5438
unnecessary_literal_unwrap:: check ( cx, expr, recv, name, args) ;
5433
5439
} ,
@@ -5439,7 +5445,15 @@ impl Methods {
5439
5445
Some ( ( "map" , recv, [ map_arg] , _, _) )
5440
5446
if map_unwrap_or:: check ( cx, expr, recv, map_arg, u_arg, self . msrv ) => { } ,
5441
5447
Some ( ( then_method @ ( "then" | "then_some" ) , t_recv, [ t_arg] , _, _) ) => {
5442
- obfuscated_if_else:: check ( cx, expr, t_recv, t_arg, u_arg, then_method, "unwrap_or_else" ) ;
5448
+ obfuscated_if_else:: check (
5449
+ cx,
5450
+ expr,
5451
+ t_recv,
5452
+ t_arg,
5453
+ Some ( u_arg) ,
5454
+ then_method,
5455
+ "unwrap_or_else" ,
5456
+ ) ;
5443
5457
} ,
5444
5458
_ => {
5445
5459
unnecessary_lazy_eval:: check ( cx, expr, recv, u_arg, "unwrap_or" ) ;
0 commit comments