@@ -463,21 +463,7 @@ fn check_exhaustive<'tcx>(
463
463
pats. iter ( ) . map ( |w| w. single_pattern ( ) ) . collect ( )
464
464
} ;
465
465
466
- const LIMIT : usize = 3 ;
467
- let joined_patterns = match witnesses. len ( ) {
468
- 0 => bug ! ( ) ,
469
- 1 => format ! ( "`{}`" , witnesses[ 0 ] ) ,
470
- 2 ..=LIMIT => {
471
- let ( tail, head) = witnesses. split_last ( ) . unwrap ( ) ;
472
- let head: Vec < _ > = head. iter ( ) . map ( |w| w. to_string ( ) ) . collect ( ) ;
473
- format ! ( "`{}` and `{}`" , head. join( "`, `" ) , tail)
474
- }
475
- _ => {
476
- let ( head, tail) = witnesses. split_at ( LIMIT ) ;
477
- let head: Vec < _ > = head. iter ( ) . map ( |w| w. to_string ( ) ) . collect ( ) ;
478
- format ! ( "`{}` and {} more" , head. join( "`, `" ) , tail. len( ) )
479
- }
480
- } ;
466
+ let joined_patterns = joined_uncovered_patterns ( & witnesses) ;
481
467
482
468
let mut err = create_e0004 ( cx. tcx . sess , sp, format ! (
483
469
"non-exhaustive patterns: {} not covered" ,
@@ -501,6 +487,24 @@ fn check_exhaustive<'tcx>(
501
487
err. emit ( ) ;
502
488
}
503
489
490
+ fn joined_uncovered_patterns ( witnesses : & [ & Pattern < ' _ > ] ) -> String {
491
+ const LIMIT : usize = 3 ;
492
+ match witnesses. len ( ) {
493
+ 0 => bug ! ( ) ,
494
+ 1 => format ! ( "`{}`" , witnesses[ 0 ] ) ,
495
+ 2 ..=LIMIT => {
496
+ let ( tail, head) = witnesses. split_last ( ) . unwrap ( ) ;
497
+ let head: Vec < _ > = head. iter ( ) . map ( |w| w. to_string ( ) ) . collect ( ) ;
498
+ format ! ( "`{}` and `{}`" , head. join( "`, `" ) , tail)
499
+ }
500
+ _ => {
501
+ let ( head, tail) = witnesses. split_at ( LIMIT ) ;
502
+ let head: Vec < _ > = head. iter ( ) . map ( |w| w. to_string ( ) ) . collect ( ) ;
503
+ format ! ( "`{}` and {} more" , head. join( "`, `" ) , tail. len( ) )
504
+ }
505
+ }
506
+ }
507
+
504
508
fn adt_defined_here ( cx : & mut MatchCheckCtxt < ' _ , ' _ > , ty : Ty < ' _ > , err : & mut DiagnosticBuilder < ' _ > ) {
505
509
if let ty:: Adt ( def, _) = ty. sty {
506
510
if let Some ( sp) = cx. tcx . hir ( ) . span_if_local ( def. did ) {
0 commit comments