@@ -34,13 +34,18 @@ pub(crate) fn convert_two_arm_bool_match_to_matches_macro(
34
34
return None ;
35
35
}
36
36
let first_arm_expr = first_arm. expr ( ) ;
37
+ let second_arm_expr = second_arm. expr ( ) ;
37
38
38
- let invert_matches = if is_bool_literal_expr ( & first_arm_expr, true ) {
39
+ let invert_matches = if is_bool_literal_expr ( & first_arm_expr, true )
40
+ && is_bool_literal_expr ( & second_arm_expr, false )
41
+ {
39
42
false
40
- } else if is_bool_literal_expr ( & first_arm_expr, false ) {
43
+ } else if is_bool_literal_expr ( & first_arm_expr, false )
44
+ && is_bool_literal_expr ( & second_arm_expr, true )
45
+ {
41
46
true
42
47
} else {
43
- cov_mark:: hit!( non_bool_literal_match ) ;
48
+ cov_mark:: hit!( non_invert_bool_literal_arms ) ;
44
49
return None ;
45
50
} ;
46
51
@@ -118,7 +123,7 @@ fn foo(a: Option<u32>) -> bool {
118
123
119
124
#[ test]
120
125
fn not_applicable_non_bool_literal_arms ( ) {
121
- cov_mark:: check!( non_bool_literal_match ) ;
126
+ cov_mark:: check!( non_invert_bool_literal_arms ) ;
122
127
check_assist_not_applicable (
123
128
convert_two_arm_bool_match_to_matches_macro,
124
129
r#"
@@ -131,6 +136,37 @@ fn foo(a: Option<u32>) -> bool {
131
136
"# ,
132
137
) ;
133
138
}
139
+ #[ test]
140
+ fn not_applicable_both_false_arms ( ) {
141
+ cov_mark:: check!( non_invert_bool_literal_arms) ;
142
+ check_assist_not_applicable (
143
+ convert_two_arm_bool_match_to_matches_macro,
144
+ r#"
145
+ fn foo(a: Option<u32>) -> bool {
146
+ match a$0 {
147
+ Some(val) => false,
148
+ _ => false
149
+ }
150
+ }
151
+ "# ,
152
+ ) ;
153
+ }
154
+
155
+ #[ test]
156
+ fn not_applicable_both_true_arms ( ) {
157
+ cov_mark:: check!( non_invert_bool_literal_arms) ;
158
+ check_assist_not_applicable (
159
+ convert_two_arm_bool_match_to_matches_macro,
160
+ r#"
161
+ fn foo(a: Option<u32>) -> bool {
162
+ match a$0 {
163
+ Some(val) => true,
164
+ _ => true
165
+ }
166
+ }
167
+ "# ,
168
+ ) ;
169
+ }
134
170
135
171
#[ test]
136
172
fn convert_simple_case ( ) {
0 commit comments