diff options
Diffstat (limited to 'crates/ide_assists/src/handlers')
-rw-r--r-- | crates/ide_assists/src/handlers/generate_getter.rs | 129 |
1 files changed, 26 insertions, 103 deletions
diff --git a/crates/ide_assists/src/handlers/generate_getter.rs b/crates/ide_assists/src/handlers/generate_getter.rs index e01985112..fbd47d761 100644 --- a/crates/ide_assists/src/handlers/generate_getter.rs +++ b/crates/ide_assists/src/handlers/generate_getter.rs | |||
@@ -130,10 +130,6 @@ mod tests { | |||
130 | 130 | ||
131 | use super::*; | 131 | use super::*; |
132 | 132 | ||
133 | fn check_not_applicable(ra_fixture: &str) { | ||
134 | check_assist_not_applicable(generate_getter, ra_fixture) | ||
135 | } | ||
136 | |||
137 | #[test] | 133 | #[test] |
138 | fn test_generate_getter_from_field() { | 134 | fn test_generate_getter_from_field() { |
139 | check_assist( | 135 | check_assist( |
@@ -154,121 +150,48 @@ impl<T: Clone> Context<T> { | |||
154 | } | 150 | } |
155 | }"#, | 151 | }"#, |
156 | ); | 152 | ); |
157 | } | ||
158 | |||
159 | #[test] | ||
160 | fn test_generate_getter_already_implemented() { | ||
161 | check_not_applicable( | ||
162 | r#" | ||
163 | struct Context<T: Clone> { | ||
164 | dat$0a: T, | ||
165 | } | ||
166 | |||
167 | impl<T: Clone> Context<T> { | ||
168 | fn data(&self) -> &T { | ||
169 | &self.data | ||
170 | } | ||
171 | }"#, | ||
172 | ); | ||
173 | } | ||
174 | 153 | ||
175 | #[test] | ||
176 | fn test_generate_getter_from_field_with_visibility_marker() { | ||
177 | check_assist( | 154 | check_assist( |
178 | generate_getter, | 155 | generate_getter_mut, |
179 | r#" | 156 | r#" |
180 | pub(crate) struct Context<T: Clone> { | 157 | struct Context<T: Clone> { |
181 | dat$0a: T, | 158 | dat$0a: T, |
182 | }"#, | 159 | }"#, |
183 | r#" | 160 | r#" |
184 | pub(crate) struct Context<T: Clone> { | 161 | struct Context<T: Clone> { |
185 | data: T, | 162 | data: T, |
186 | } | 163 | } |
187 | 164 | ||
188 | impl<T: Clone> Context<T> { | 165 | impl<T: Clone> Context<T> { |
189 | /// Get a reference to the context's data. | 166 | /// Get a mutable reference to the context's data. |
190 | pub(crate) fn data(&self) -> &T { | 167 | fn data_mut(&mut self) -> &mut T { |
191 | &self.data | 168 | &mut self.data |
192 | } | 169 | } |
193 | }"#, | 170 | }"#, |
194 | ); | 171 | ); |
195 | } | 172 | } |
196 | 173 | ||
197 | #[test] | 174 | #[test] |
198 | fn test_multiple_generate_getter() { | 175 | fn test_generate_getter_already_implemented() { |
199 | check_assist( | 176 | check_assist_not_applicable( |
200 | generate_getter, | 177 | generate_getter, |
201 | r#" | 178 | r#" |
202 | struct Context<T: Clone> { | 179 | struct Context<T: Clone> { |
203 | data: T, | 180 | dat$0a: T, |
204 | cou$0nt: usize, | ||
205 | } | ||
206 | |||
207 | impl<T: Clone> Context<T> { | ||
208 | /// Get a reference to the context's data. | ||
209 | fn data(&self) -> &T { | ||
210 | &self.data | ||
211 | } | ||
212 | }"#, | ||
213 | r#" | ||
214 | struct Context<T: Clone> { | ||
215 | data: T, | ||
216 | count: usize, | ||
217 | } | 181 | } |
218 | 182 | ||
219 | impl<T: Clone> Context<T> { | 183 | impl<T: Clone> Context<T> { |
220 | /// Get a reference to the context's data. | ||
221 | fn data(&self) -> &T { | 184 | fn data(&self) -> &T { |
222 | &self.data | 185 | &self.data |
223 | } | 186 | } |
224 | |||
225 | /// Get a reference to the context's count. | ||
226 | fn count(&self) -> &usize { | ||
227 | &self.count | ||
228 | } | ||
229 | }"#, | 187 | }"#, |
230 | ); | 188 | ); |
231 | } | ||
232 | } | ||
233 | |||
234 | #[cfg(test)] | ||
235 | mod tests_mut { | ||
236 | use crate::tests::{check_assist, check_assist_not_applicable}; | ||
237 | |||
238 | use super::*; | ||
239 | 189 | ||
240 | fn check_not_applicable(ra_fixture: &str) { | 190 | check_assist_not_applicable( |
241 | check_assist_not_applicable(generate_getter_mut, ra_fixture) | ||
242 | } | ||
243 | |||
244 | #[test] | ||
245 | fn test_generate_getter_mut_from_field() { | ||
246 | check_assist( | ||
247 | generate_getter_mut, | 191 | generate_getter_mut, |
248 | r#" | 192 | r#" |
249 | struct Context<T: Clone> { | 193 | struct Context<T: Clone> { |
250 | dat$0a: T, | 194 | dat$0a: T, |
251 | }"#, | ||
252 | r#" | ||
253 | struct Context<T: Clone> { | ||
254 | data: T, | ||
255 | } | ||
256 | |||
257 | impl<T: Clone> Context<T> { | ||
258 | /// Get a mutable reference to the context's data. | ||
259 | fn data_mut(&mut self) -> &mut T { | ||
260 | &mut self.data | ||
261 | } | ||
262 | }"#, | ||
263 | ); | ||
264 | } | ||
265 | |||
266 | #[test] | ||
267 | fn test_generate_getter_mut_already_implemented() { | ||
268 | check_not_applicable( | ||
269 | r#" | ||
270 | struct Context<T: Clone> { | ||
271 | dat$0a: T, | ||
272 | } | 195 | } |
273 | 196 | ||
274 | impl<T: Clone> Context<T> { | 197 | impl<T: Clone> Context<T> { |
@@ -280,9 +203,9 @@ impl<T: Clone> Context<T> { | |||
280 | } | 203 | } |
281 | 204 | ||
282 | #[test] | 205 | #[test] |
283 | fn test_generate_getter_mut_from_field_with_visibility_marker() { | 206 | fn test_generate_getter_from_field_with_visibility_marker() { |
284 | check_assist( | 207 | check_assist( |
285 | generate_getter_mut, | 208 | generate_getter, |
286 | r#" | 209 | r#" |
287 | pub(crate) struct Context<T: Clone> { | 210 | pub(crate) struct Context<T: Clone> { |
288 | dat$0a: T, | 211 | dat$0a: T, |
@@ -293,18 +216,18 @@ pub(crate) struct Context<T: Clone> { | |||
293 | } | 216 | } |
294 | 217 | ||
295 | impl<T: Clone> Context<T> { | 218 | impl<T: Clone> Context<T> { |
296 | /// Get a mutable reference to the context's data. | 219 | /// Get a reference to the context's data. |
297 | pub(crate) fn data_mut(&mut self) -> &mut T { | 220 | pub(crate) fn data(&self) -> &T { |
298 | &mut self.data | 221 | &self.data |
299 | } | 222 | } |
300 | }"#, | 223 | }"#, |
301 | ); | 224 | ); |
302 | } | 225 | } |
303 | 226 | ||
304 | #[test] | 227 | #[test] |
305 | fn test_multiple_generate_getter_mut() { | 228 | fn test_multiple_generate_getter() { |
306 | check_assist( | 229 | check_assist( |
307 | generate_getter_mut, | 230 | generate_getter, |
308 | r#" | 231 | r#" |
309 | struct Context<T: Clone> { | 232 | struct Context<T: Clone> { |
310 | data: T, | 233 | data: T, |
@@ -312,9 +235,9 @@ struct Context<T: Clone> { | |||
312 | } | 235 | } |
313 | 236 | ||
314 | impl<T: Clone> Context<T> { | 237 | impl<T: Clone> Context<T> { |
315 | /// Get a mutable reference to the context's data. | 238 | /// Get a reference to the context's data. |
316 | fn data_mut(&mut self) -> &mut T { | 239 | fn data(&self) -> &T { |
317 | &mut self.data | 240 | &self.data |
318 | } | 241 | } |
319 | }"#, | 242 | }"#, |
320 | r#" | 243 | r#" |
@@ -324,14 +247,14 @@ struct Context<T: Clone> { | |||
324 | } | 247 | } |
325 | 248 | ||
326 | impl<T: Clone> Context<T> { | 249 | impl<T: Clone> Context<T> { |
327 | /// Get a mutable reference to the context's data. | 250 | /// Get a reference to the context's data. |
328 | fn data_mut(&mut self) -> &mut T { | 251 | fn data(&self) -> &T { |
329 | &mut self.data | 252 | &self.data |
330 | } | 253 | } |
331 | 254 | ||
332 | /// Get a mutable reference to the context's count. | 255 | /// Get a reference to the context's count. |
333 | fn count_mut(&mut self) -> &mut usize { | 256 | fn count(&self) -> &usize { |
334 | &mut self.count | 257 | &self.count |
335 | } | 258 | } |
336 | }"#, | 259 | }"#, |
337 | ); | 260 | ); |