]>
Commit | Line | Data |
---|---|---|
923072b8 FG |
1 | #![warn(clippy::match_str_case_mismatch)] |
2 | #![allow(dead_code)] | |
3 | ||
4 | // Valid | |
5 | ||
6 | fn as_str_match() { | |
7 | let var = "BAR"; | |
8 | ||
9 | match var.to_ascii_lowercase().as_str() { | |
10 | "foo" => {}, | |
11 | "bar" => {}, | |
12 | _ => {}, | |
13 | } | |
14 | } | |
15 | ||
16 | fn non_alphabetic() { | |
17 | let var = "~!@#$%^&*()-_=+FOO"; | |
18 | ||
19 | match var.to_ascii_lowercase().as_str() { | |
20 | "1234567890" => {}, | |
21 | "~!@#$%^&*()-_=+foo" => {}, | |
22 | "\n\r\t\x7F" => {}, | |
23 | _ => {}, | |
24 | } | |
25 | } | |
26 | ||
27 | fn unicode_cased() { | |
28 | let var = "ВОДЫ"; | |
29 | ||
30 | match var.to_lowercase().as_str() { | |
31 | "水" => {}, | |
32 | "νερό" => {}, | |
33 | "воды" => {}, | |
34 | "물" => {}, | |
35 | _ => {}, | |
36 | } | |
37 | } | |
38 | ||
39 | fn titlecase() { | |
40 | let var = "BarDz"; | |
41 | ||
42 | match var.to_lowercase().as_str() { | |
43 | "foolj" => {}, | |
44 | "bardz" => {}, | |
45 | _ => {}, | |
46 | } | |
47 | } | |
48 | ||
49 | fn no_case_equivalent() { | |
50 | let var = "barʁ"; | |
51 | ||
52 | match var.to_uppercase().as_str() { | |
53 | "FOOɕ" => {}, | |
54 | "BARʁ" => {}, | |
55 | _ => {}, | |
56 | } | |
57 | } | |
58 | ||
59 | fn addrof_unary_match() { | |
60 | let var = "BAR"; | |
61 | ||
62 | match &*var.to_ascii_lowercase() { | |
63 | "foo" => {}, | |
64 | "bar" => {}, | |
65 | _ => {}, | |
66 | } | |
67 | } | |
68 | ||
69 | fn alternating_chain() { | |
70 | let var = "BAR"; | |
71 | ||
72 | match &*var | |
73 | .to_ascii_lowercase() | |
74 | .to_uppercase() | |
75 | .to_lowercase() | |
76 | .to_ascii_uppercase() | |
77 | { | |
78 | "FOO" => {}, | |
79 | "BAR" => {}, | |
80 | _ => {}, | |
81 | } | |
82 | } | |
83 | ||
84 | fn unrelated_method() { | |
85 | struct Item { | |
86 | a: String, | |
87 | } | |
88 | ||
89 | impl Item { | |
90 | #[allow(clippy::wrong_self_convention)] | |
91 | fn to_lowercase(self) -> String { | |
92 | self.a | |
93 | } | |
94 | } | |
95 | ||
96 | let item = Item { a: String::from("BAR") }; | |
97 | ||
98 | match &*item.to_lowercase() { | |
99 | "FOO" => {}, | |
100 | "BAR" => {}, | |
101 | _ => {}, | |
102 | } | |
103 | } | |
104 | ||
105 | // Invalid | |
106 | ||
107 | fn as_str_match_mismatch() { | |
108 | let var = "BAR"; | |
109 | ||
110 | match var.to_ascii_lowercase().as_str() { | |
111 | "foo" => {}, | |
112 | "bar" => {}, | |
113 | _ => {}, | |
114 | } | |
115 | } | |
116 | ||
117 | fn non_alphabetic_mismatch() { | |
118 | let var = "~!@#$%^&*()-_=+FOO"; | |
119 | ||
120 | match var.to_ascii_lowercase().as_str() { | |
121 | "1234567890" => {}, | |
122 | "~!@#$%^&*()-_=+foo" => {}, | |
123 | "\n\r\t\x7F" => {}, | |
124 | _ => {}, | |
125 | } | |
126 | } | |
127 | ||
128 | fn unicode_cased_mismatch() { | |
129 | let var = "ВОДЫ"; | |
130 | ||
131 | match var.to_lowercase().as_str() { | |
132 | "水" => {}, | |
133 | "νερό" => {}, | |
134 | "воды" => {}, | |
135 | "물" => {}, | |
136 | _ => {}, | |
137 | } | |
138 | } | |
139 | ||
140 | fn titlecase_mismatch() { | |
141 | let var = "BarDz"; | |
142 | ||
143 | match var.to_lowercase().as_str() { | |
144 | "foolj" => {}, | |
145 | "bardz" => {}, | |
146 | _ => {}, | |
147 | } | |
148 | } | |
149 | ||
150 | fn no_case_equivalent_mismatch() { | |
151 | let var = "barʁ"; | |
152 | ||
153 | match var.to_uppercase().as_str() { | |
154 | "FOOɕ" => {}, | |
155 | "BARʁ" => {}, | |
156 | _ => {}, | |
157 | } | |
158 | } | |
159 | ||
160 | fn addrof_unary_match_mismatch() { | |
161 | let var = "BAR"; | |
162 | ||
163 | match &*var.to_ascii_lowercase() { | |
164 | "foo" => {}, | |
165 | "bar" => {}, | |
166 | _ => {}, | |
167 | } | |
168 | } | |
169 | ||
170 | fn alternating_chain_mismatch() { | |
171 | let var = "BAR"; | |
172 | ||
173 | match &*var | |
174 | .to_ascii_lowercase() | |
175 | .to_uppercase() | |
176 | .to_lowercase() | |
177 | .to_ascii_uppercase() | |
178 | { | |
179 | "FOO" => {}, | |
180 | "BAR" => {}, | |
181 | _ => {}, | |
182 | } | |
183 | } | |
184 | ||
185 | fn main() {} |