@@ -73,36 +73,39 @@ impl Pass {
73
73
74
74
then {
75
75
let receiver_str = & Sugg :: hir( cx, subject, ".." ) ;
76
- let mut replacement_str = String :: new ( ) ;
76
+ let mut replacement : Option < String > = None ;
77
77
if let Some ( else_) = else_ {
78
78
if_chain! {
79
79
if let ExprKind :: Block ( block, None ) = & else_. node;
80
80
if block. stmts. len( ) == 0 ;
81
81
if let Some ( block_expr) = & block. expr;
82
82
if SpanlessEq :: new( cx) . ignore_fn( ) . eq_expr( subject, block_expr) ;
83
83
then {
84
- replacement_str = format!( "Some({}?)" , receiver_str) ;
84
+ replacement = Some ( format!( "Some({}?)" , receiver_str) ) ;
85
85
}
86
86
}
87
87
} else if Self :: moves_by_default( cx, subject) {
88
- replacement_str = format!( "{}.as_ref()?;" , receiver_str) ;
88
+ replacement = Some ( format!( "{}.as_ref()?;" , receiver_str) ) ;
89
89
} else {
90
- replacement_str = format!( "{}?;" , receiver_str) ;
90
+ replacement = Some ( format!( "{}?;" , receiver_str) ) ;
91
91
}
92
- span_lint_and_then(
93
- cx,
94
- QUESTION_MARK ,
95
- expr. span,
96
- "this block may be rewritten with the `?` operator" ,
97
- |db| {
98
- db. span_suggestion_with_applicability(
99
- expr. span,
100
- "replace_it_with" ,
101
- replacement_str,
102
- Applicability :: MaybeIncorrect , // snippet
103
- ) ;
104
- }
105
- )
92
+
93
+ if let Some ( replacement_str) = replacement {
94
+ span_lint_and_then(
95
+ cx,
96
+ QUESTION_MARK ,
97
+ expr. span,
98
+ "this block may be rewritten with the `?` operator" ,
99
+ |db| {
100
+ db. span_suggestion_with_applicability(
101
+ expr. span,
102
+ "replace_it_with" ,
103
+ replacement_str,
104
+ Applicability :: MaybeIncorrect , // snippet
105
+ ) ;
106
+ }
107
+ )
108
+ }
106
109
}
107
110
}
108
111
}
0 commit comments