@@ -159,7 +159,7 @@ fn emit_manual_let_else(
159
159
} else {
160
160
format ! ( "{{ {sn_else} }}" )
161
161
} ;
162
- let sn_bl = replace_in_pattern ( cx, span, local, pat, & mut app) ;
162
+ let sn_bl = replace_in_pattern ( cx, span, local, pat, & mut app, true ) ;
163
163
let sugg = format ! ( "let {sn_bl} = {sn_expr} else {else_bl};" ) ;
164
164
diag. span_suggestion ( span, "consider writing" , sugg, app) ;
165
165
} ,
@@ -173,6 +173,7 @@ fn replace_in_pattern(
173
173
local : & Pat < ' _ > ,
174
174
pat : & Pat < ' _ > ,
175
175
app : & mut Applicability ,
176
+ top_level : bool ,
176
177
) -> String {
177
178
let mut bindings_count = 0 ;
178
179
pat. each_binding_or_first ( & mut |_, _, _, _| bindings_count += 1 ) ;
@@ -191,16 +192,20 @@ fn replace_in_pattern(
191
192
PatKind :: Or ( pats) => {
192
193
let patterns = pats
193
194
. iter ( )
194
- . map ( |pat| replace_in_pattern ( cx, span, local, pat, app) )
195
+ . map ( |pat| replace_in_pattern ( cx, span, local, pat, app, false ) )
195
196
. collect :: < Vec < _ > > ( ) ;
196
197
let or_pat = patterns. join ( " | " ) ;
197
- return format ! ( "({or_pat})" ) ;
198
+ if top_level {
199
+ return format ! ( "({or_pat})" ) ;
200
+ } else {
201
+ return or_pat;
202
+ }
198
203
} ,
199
204
// Replace the variable name iff `TupleStruct` has one argument like `Variant(v)`.
200
205
PatKind :: TupleStruct ( ref w, args, dot_dot_pos) => {
201
206
let mut args = args
202
207
. iter ( )
203
- . map ( |pat| replace_in_pattern ( cx, span, local, pat, app) )
208
+ . map ( |pat| replace_in_pattern ( cx, span, local, pat, app, false ) )
204
209
. collect :: < Vec < _ > > ( ) ;
205
210
if let Some ( pos) = dot_dot_pos. as_opt_usize ( ) {
206
211
args. insert ( pos, ".." . to_owned ( ) ) ;
0 commit comments