@@ -269,6 +269,7 @@ fn does_pat_match_variant(pat: &Pat, var: &Pat) -> bool {
269
269
( Pat :: TuplePat ( tpat) , Pat :: TuplePat ( tvar) ) => {
270
270
tpat. fields ( ) . zip ( tvar. fields ( ) ) . all ( |( p, v) | does_pat_match_variant ( & p, & v) )
271
271
}
272
+ ( Pat :: OrPat ( opat) , _) => opat. pats ( ) . any ( |p| does_pat_match_variant ( & p, var) ) ,
272
273
_ => utils:: does_pat_match_variant ( pat, var) ,
273
274
}
274
275
}
@@ -525,6 +526,19 @@ fn foo(a: bool) {
525
526
add_missing_match_arms,
526
527
r#"
527
528
fn foo(a: bool) {
529
+ match (a, a)$0 {
530
+ (true | false, true) => {}
531
+ (true, false) => {}
532
+ (false, false) => {}
533
+ }
534
+ }
535
+ "# ,
536
+ ) ;
537
+
538
+ check_assist_not_applicable (
539
+ add_missing_match_arms,
540
+ r#"
541
+ fn foo(a: bool) {
528
542
match (a, a)$0 {
529
543
(true, true) => {}
530
544
(true, false) => {}
@@ -565,6 +579,26 @@ fn foo(a: bool) {
565
579
add_missing_match_arms,
566
580
r#"
567
581
fn foo(a: bool) {
582
+ match (a, a)$0 {
583
+ (true | false, true) => {}
584
+ }
585
+ }
586
+ "# ,
587
+ r#"
588
+ fn foo(a: bool) {
589
+ match (a, a) {
590
+ (true | false, true) => {}
591
+ $0(true, false) => todo!(),
592
+ (false, false) => todo!(),
593
+ }
594
+ }
595
+ "# ,
596
+ ) ;
597
+
598
+ check_assist (
599
+ add_missing_match_arms,
600
+ r#"
601
+ fn foo(a: bool) {
568
602
match (a, a)$0 {
569
603
(false, true) => {}
570
604
}
@@ -882,6 +916,33 @@ fn main() {
882
916
}
883
917
"# ,
884
918
) ;
919
+
920
+ check_assist (
921
+ add_missing_match_arms,
922
+ r#"
923
+ enum E { A, B, C }
924
+ fn main() {
925
+ use E::*;
926
+ match (A, B, C)$0 {
927
+ (A | B , A, A | B | C) => (),
928
+ (A | B | C , B | C, A | B | C) => (),
929
+ }
930
+ }
931
+ "# ,
932
+ r#"
933
+ enum E { A, B, C }
934
+ fn main() {
935
+ use E::*;
936
+ match (A, B, C) {
937
+ (A | B , A, A | B | C) => (),
938
+ (A | B | C , B | C, A | B | C) => (),
939
+ $0(C, A, A) => todo!(),
940
+ (C, A, B) => todo!(),
941
+ (C, A, C) => todo!(),
942
+ }
943
+ }
944
+ "# ,
945
+ )
885
946
}
886
947
887
948
#[ test]
0 commit comments