@@ -42,6 +42,23 @@ fn search_old_style(target: (bool, bool, bool)) -> u32 {
4242 }
4343}
4444
45+ // Check that a dummy or-pattern also leads to running the guard multiple times.
46+ fn search_with_dummy ( target : ( bool , bool ) ) -> u32 {
47+ let x = ( ( false , true ) , ( false , true ) , ( ) ) ;
48+ let mut guard_count = 0 ;
49+ match x {
50+ ( ( a, _) | ( _, a) , ( b, _) | ( _, b) , _ | _)
51+ if {
52+ guard_count += 1 ;
53+ ( a, b) == target
54+ } =>
55+ {
56+ guard_count
57+ }
58+ _ => unreachable ! ( ) ,
59+ }
60+ }
61+
4562fn main ( ) {
4663 assert_eq ! ( search( ( false , false , false ) ) , 1 ) ;
4764 assert_eq ! ( search( ( false , false , true ) ) , 2 ) ;
@@ -60,4 +77,9 @@ fn main() {
6077 assert_eq ! ( search_old_style( ( true , false , true ) ) , 6 ) ;
6178 assert_eq ! ( search_old_style( ( true , true , false ) ) , 7 ) ;
6279 assert_eq ! ( search_old_style( ( true , true , true ) ) , 8 ) ;
80+
81+ assert_eq ! ( search_with_dummy( ( false , false ) ) , 1 ) ;
82+ assert_eq ! ( search_with_dummy( ( false , true ) ) , 3 ) ;
83+ assert_eq ! ( search_with_dummy( ( true , false ) ) , 5 ) ;
84+ assert_eq ! ( search_with_dummy( ( true , true ) ) , 7 ) ;
6385}
0 commit comments