@@ -261,20 +261,32 @@ fn check_arms(cx: &MatchCheckCtxt, arms: &[(Vec<P<Pat>>, Option<&Expr>)], source
261
261
262
262
match is_useful ( cx, & seen, v. as_slice ( ) , LeaveOutWitness ) {
263
263
NotUseful => {
264
- if source == MatchIfLetDesugar {
265
- if printed_if_let_err {
266
- // we already printed an irrefutable if-let pattern error.
267
- // We don't want two, that's just confusing.
268
- } else {
264
+ match source {
265
+ MatchIfLetDesugar => {
266
+ if printed_if_let_err {
267
+ // we already printed an irrefutable if-let pattern error.
268
+ // We don't want two, that's just confusing.
269
+ } else {
270
+ // find the first arm pattern so we can use its span
271
+ let & ( ref first_arm_pats, _) = & arms[ 0 ] ;
272
+ let first_pat = first_arm_pats. get ( 0 ) ;
273
+ let span = first_pat. span ;
274
+ span_err ! ( cx. tcx. sess, span, E0162 , "irrefutable if-let pattern" ) ;
275
+ printed_if_let_err = true ;
276
+ }
277
+ } ,
278
+
279
+ MatchWhileLetDesugar => {
269
280
// find the first arm pattern so we can use its span
270
281
let & ( ref first_arm_pats, _) = & arms[ 0 ] ;
271
282
let first_pat = first_arm_pats. get ( 0 ) ;
272
283
let span = first_pat. span ;
273
- span_err ! ( cx. tcx. sess, span, E0162 , "irrefutable if-let pattern" ) ;
274
- printed_if_let_err = true ;
275
- }
276
- } else {
277
- span_err ! ( cx. tcx. sess, pat. span, E0001 , "unreachable pattern" ) ;
284
+ span_err ! ( cx. tcx. sess, span, E0165 , "irrefutable while-let pattern" ) ;
285
+ } ,
286
+
287
+ MatchNormal => {
288
+ span_err ! ( cx. tcx. sess, pat. span, E0001 , "unreachable pattern" )
289
+ } ,
278
290
}
279
291
}
280
292
Useful => ( ) ,
0 commit comments