diff options
-rw-r--r-- | crates/ra_assists/src/handlers/extract_variable.rs (renamed from crates/ra_assists/src/handlers/introduce_variable.rs) | 106 | ||||
-rw-r--r-- | crates/ra_assists/src/lib.rs | 4 | ||||
-rw-r--r-- | crates/ra_assists/src/tests/generated.rs | 36 |
3 files changed, 73 insertions, 73 deletions
diff --git a/crates/ra_assists/src/handlers/introduce_variable.rs b/crates/ra_assists/src/handlers/extract_variable.rs index 96affe49d..c4150d2bb 100644 --- a/crates/ra_assists/src/handlers/introduce_variable.rs +++ b/crates/ra_assists/src/handlers/extract_variable.rs | |||
@@ -11,7 +11,7 @@ use test_utils::mark; | |||
11 | 11 | ||
12 | use crate::{AssistContext, AssistId, Assists}; | 12 | use crate::{AssistContext, AssistId, Assists}; |
13 | 13 | ||
14 | // Assist: introduce_variable | 14 | // Assist: extract_variable |
15 | // | 15 | // |
16 | // Extracts subexpression into a variable. | 16 | // Extracts subexpression into a variable. |
17 | // | 17 | // |
@@ -27,13 +27,13 @@ use crate::{AssistContext, AssistId, Assists}; | |||
27 | // var_name * 4; | 27 | // var_name * 4; |
28 | // } | 28 | // } |
29 | // ``` | 29 | // ``` |
30 | pub(crate) fn introduce_variable(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { | 30 | pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { |
31 | if ctx.frange.range.is_empty() { | 31 | if ctx.frange.range.is_empty() { |
32 | return None; | 32 | return None; |
33 | } | 33 | } |
34 | let node = ctx.covering_element(); | 34 | let node = ctx.covering_element(); |
35 | if node.kind() == COMMENT { | 35 | if node.kind() == COMMENT { |
36 | mark::hit!(introduce_var_in_comment_is_not_applicable); | 36 | mark::hit!(extract_var_in_comment_is_not_applicable); |
37 | return None; | 37 | return None; |
38 | } | 38 | } |
39 | let expr = node.ancestors().find_map(valid_target_expr)?; | 39 | let expr = node.ancestors().find_map(valid_target_expr)?; |
@@ -43,7 +43,7 @@ pub(crate) fn introduce_variable(acc: &mut Assists, ctx: &AssistContext) -> Opti | |||
43 | return None; | 43 | return None; |
44 | } | 44 | } |
45 | let target = expr.syntax().text_range(); | 45 | let target = expr.syntax().text_range(); |
46 | acc.add(AssistId("introduce_variable"), "Extract into variable", target, move |edit| { | 46 | acc.add(AssistId("extract_variable"), "Extract into variable", target, move |edit| { |
47 | let field_shorthand = match expr.syntax().parent().and_then(ast::RecordField::cast) { | 47 | let field_shorthand = match expr.syntax().parent().and_then(ast::RecordField::cast) { |
48 | Some(field) => field.name_ref(), | 48 | Some(field) => field.name_ref(), |
49 | None => None, | 49 | None => None, |
@@ -74,7 +74,7 @@ pub(crate) fn introduce_variable(acc: &mut Assists, ctx: &AssistContext) -> Opti | |||
74 | false | 74 | false |
75 | }; | 75 | }; |
76 | if is_full_stmt { | 76 | if is_full_stmt { |
77 | mark::hit!(test_introduce_var_expr_stmt); | 77 | mark::hit!(test_extract_var_expr_stmt); |
78 | if full_stmt.unwrap().semicolon_token().is_none() { | 78 | if full_stmt.unwrap().semicolon_token().is_none() { |
79 | buf.push_str(";"); | 79 | buf.push_str(";"); |
80 | } | 80 | } |
@@ -133,7 +133,7 @@ fn valid_target_expr(node: SyntaxNode) -> Option<ast::Expr> { | |||
133 | } | 133 | } |
134 | } | 134 | } |
135 | 135 | ||
136 | /// Returns the syntax node which will follow the freshly introduced var | 136 | /// Returns the syntax node which will follow the freshly extractd var |
137 | /// and a boolean indicating whether we have to wrap it within a { } block | 137 | /// and a boolean indicating whether we have to wrap it within a { } block |
138 | /// to produce correct code. | 138 | /// to produce correct code. |
139 | /// It can be a statement, the last in a block expression or a wanna be block | 139 | /// It can be a statement, the last in a block expression or a wanna be block |
@@ -142,7 +142,7 @@ fn anchor_stmt(expr: ast::Expr) -> Option<(SyntaxNode, bool)> { | |||
142 | expr.syntax().ancestors().find_map(|node| { | 142 | expr.syntax().ancestors().find_map(|node| { |
143 | if let Some(expr) = node.parent().and_then(ast::BlockExpr::cast).and_then(|it| it.expr()) { | 143 | if let Some(expr) = node.parent().and_then(ast::BlockExpr::cast).and_then(|it| it.expr()) { |
144 | if expr.syntax() == &node { | 144 | if expr.syntax() == &node { |
145 | mark::hit!(test_introduce_var_last_expr); | 145 | mark::hit!(test_extract_var_last_expr); |
146 | return Some((node, false)); | 146 | return Some((node, false)); |
147 | } | 147 | } |
148 | } | 148 | } |
@@ -170,9 +170,9 @@ mod tests { | |||
170 | use super::*; | 170 | use super::*; |
171 | 171 | ||
172 | #[test] | 172 | #[test] |
173 | fn test_introduce_var_simple() { | 173 | fn test_extract_var_simple() { |
174 | check_assist( | 174 | check_assist( |
175 | introduce_variable, | 175 | extract_variable, |
176 | r#" | 176 | r#" |
177 | fn foo() { | 177 | fn foo() { |
178 | foo(<|>1 + 1<|>); | 178 | foo(<|>1 + 1<|>); |
@@ -186,16 +186,16 @@ fn foo() { | |||
186 | } | 186 | } |
187 | 187 | ||
188 | #[test] | 188 | #[test] |
189 | fn introduce_var_in_comment_is_not_applicable() { | 189 | fn extract_var_in_comment_is_not_applicable() { |
190 | mark::check!(introduce_var_in_comment_is_not_applicable); | 190 | mark::check!(extract_var_in_comment_is_not_applicable); |
191 | check_assist_not_applicable(introduce_variable, "fn main() { 1 + /* <|>comment<|> */ 1; }"); | 191 | check_assist_not_applicable(extract_variable, "fn main() { 1 + /* <|>comment<|> */ 1; }"); |
192 | } | 192 | } |
193 | 193 | ||
194 | #[test] | 194 | #[test] |
195 | fn test_introduce_var_expr_stmt() { | 195 | fn test_extract_var_expr_stmt() { |
196 | mark::check!(test_introduce_var_expr_stmt); | 196 | mark::check!(test_extract_var_expr_stmt); |
197 | check_assist( | 197 | check_assist( |
198 | introduce_variable, | 198 | extract_variable, |
199 | r#" | 199 | r#" |
200 | fn foo() { | 200 | fn foo() { |
201 | <|>1 + 1<|>; | 201 | <|>1 + 1<|>; |
@@ -206,7 +206,7 @@ fn foo() { | |||
206 | }"#, | 206 | }"#, |
207 | ); | 207 | ); |
208 | check_assist( | 208 | check_assist( |
209 | introduce_variable, | 209 | extract_variable, |
210 | " | 210 | " |
211 | fn foo() { | 211 | fn foo() { |
212 | <|>{ let x = 0; x }<|> | 212 | <|>{ let x = 0; x }<|> |
@@ -221,9 +221,9 @@ fn foo() { | |||
221 | } | 221 | } |
222 | 222 | ||
223 | #[test] | 223 | #[test] |
224 | fn test_introduce_var_part_of_expr_stmt() { | 224 | fn test_extract_var_part_of_expr_stmt() { |
225 | check_assist( | 225 | check_assist( |
226 | introduce_variable, | 226 | extract_variable, |
227 | " | 227 | " |
228 | fn foo() { | 228 | fn foo() { |
229 | <|>1<|> + 1; | 229 | <|>1<|> + 1; |
@@ -237,10 +237,10 @@ fn foo() { | |||
237 | } | 237 | } |
238 | 238 | ||
239 | #[test] | 239 | #[test] |
240 | fn test_introduce_var_last_expr() { | 240 | fn test_extract_var_last_expr() { |
241 | mark::check!(test_introduce_var_last_expr); | 241 | mark::check!(test_extract_var_last_expr); |
242 | check_assist( | 242 | check_assist( |
243 | introduce_variable, | 243 | extract_variable, |
244 | r#" | 244 | r#" |
245 | fn foo() { | 245 | fn foo() { |
246 | bar(<|>1 + 1<|>) | 246 | bar(<|>1 + 1<|>) |
@@ -254,7 +254,7 @@ fn foo() { | |||
254 | "#, | 254 | "#, |
255 | ); | 255 | ); |
256 | check_assist( | 256 | check_assist( |
257 | introduce_variable, | 257 | extract_variable, |
258 | r#" | 258 | r#" |
259 | fn foo() { | 259 | fn foo() { |
260 | <|>bar(1 + 1)<|> | 260 | <|>bar(1 + 1)<|> |
@@ -270,9 +270,9 @@ fn foo() { | |||
270 | } | 270 | } |
271 | 271 | ||
272 | #[test] | 272 | #[test] |
273 | fn test_introduce_var_in_match_arm_no_block() { | 273 | fn test_extract_var_in_match_arm_no_block() { |
274 | check_assist( | 274 | check_assist( |
275 | introduce_variable, | 275 | extract_variable, |
276 | " | 276 | " |
277 | fn main() { | 277 | fn main() { |
278 | let x = true; | 278 | let x = true; |
@@ -295,9 +295,9 @@ fn main() { | |||
295 | } | 295 | } |
296 | 296 | ||
297 | #[test] | 297 | #[test] |
298 | fn test_introduce_var_in_match_arm_with_block() { | 298 | fn test_extract_var_in_match_arm_with_block() { |
299 | check_assist( | 299 | check_assist( |
300 | introduce_variable, | 300 | extract_variable, |
301 | " | 301 | " |
302 | fn main() { | 302 | fn main() { |
303 | let x = true; | 303 | let x = true; |
@@ -327,9 +327,9 @@ fn main() { | |||
327 | } | 327 | } |
328 | 328 | ||
329 | #[test] | 329 | #[test] |
330 | fn test_introduce_var_in_closure_no_block() { | 330 | fn test_extract_var_in_closure_no_block() { |
331 | check_assist( | 331 | check_assist( |
332 | introduce_variable, | 332 | extract_variable, |
333 | " | 333 | " |
334 | fn main() { | 334 | fn main() { |
335 | let lambda = |x: u32| <|>x * 2<|>; | 335 | let lambda = |x: u32| <|>x * 2<|>; |
@@ -344,9 +344,9 @@ fn main() { | |||
344 | } | 344 | } |
345 | 345 | ||
346 | #[test] | 346 | #[test] |
347 | fn test_introduce_var_in_closure_with_block() { | 347 | fn test_extract_var_in_closure_with_block() { |
348 | check_assist( | 348 | check_assist( |
349 | introduce_variable, | 349 | extract_variable, |
350 | " | 350 | " |
351 | fn main() { | 351 | fn main() { |
352 | let lambda = |x: u32| { <|>x * 2<|> }; | 352 | let lambda = |x: u32| { <|>x * 2<|> }; |
@@ -361,9 +361,9 @@ fn main() { | |||
361 | } | 361 | } |
362 | 362 | ||
363 | #[test] | 363 | #[test] |
364 | fn test_introduce_var_path_simple() { | 364 | fn test_extract_var_path_simple() { |
365 | check_assist( | 365 | check_assist( |
366 | introduce_variable, | 366 | extract_variable, |
367 | " | 367 | " |
368 | fn main() { | 368 | fn main() { |
369 | let o = <|>Some(true)<|>; | 369 | let o = <|>Some(true)<|>; |
@@ -379,9 +379,9 @@ fn main() { | |||
379 | } | 379 | } |
380 | 380 | ||
381 | #[test] | 381 | #[test] |
382 | fn test_introduce_var_path_method() { | 382 | fn test_extract_var_path_method() { |
383 | check_assist( | 383 | check_assist( |
384 | introduce_variable, | 384 | extract_variable, |
385 | " | 385 | " |
386 | fn main() { | 386 | fn main() { |
387 | let v = <|>bar.foo()<|>; | 387 | let v = <|>bar.foo()<|>; |
@@ -397,9 +397,9 @@ fn main() { | |||
397 | } | 397 | } |
398 | 398 | ||
399 | #[test] | 399 | #[test] |
400 | fn test_introduce_var_return() { | 400 | fn test_extract_var_return() { |
401 | check_assist( | 401 | check_assist( |
402 | introduce_variable, | 402 | extract_variable, |
403 | " | 403 | " |
404 | fn foo() -> u32 { | 404 | fn foo() -> u32 { |
405 | <|>return 2 + 2<|>; | 405 | <|>return 2 + 2<|>; |
@@ -415,9 +415,9 @@ fn foo() -> u32 { | |||
415 | } | 415 | } |
416 | 416 | ||
417 | #[test] | 417 | #[test] |
418 | fn test_introduce_var_does_not_add_extra_whitespace() { | 418 | fn test_extract_var_does_not_add_extra_whitespace() { |
419 | check_assist( | 419 | check_assist( |
420 | introduce_variable, | 420 | extract_variable, |
421 | " | 421 | " |
422 | fn foo() -> u32 { | 422 | fn foo() -> u32 { |
423 | 423 | ||
@@ -436,7 +436,7 @@ fn foo() -> u32 { | |||
436 | ); | 436 | ); |
437 | 437 | ||
438 | check_assist( | 438 | check_assist( |
439 | introduce_variable, | 439 | extract_variable, |
440 | " | 440 | " |
441 | fn foo() -> u32 { | 441 | fn foo() -> u32 { |
442 | 442 | ||
@@ -453,7 +453,7 @@ fn foo() -> u32 { | |||
453 | ); | 453 | ); |
454 | 454 | ||
455 | check_assist( | 455 | check_assist( |
456 | introduce_variable, | 456 | extract_variable, |
457 | " | 457 | " |
458 | fn foo() -> u32 { | 458 | fn foo() -> u32 { |
459 | let foo = 1; | 459 | let foo = 1; |
@@ -479,9 +479,9 @@ fn foo() -> u32 { | |||
479 | } | 479 | } |
480 | 480 | ||
481 | #[test] | 481 | #[test] |
482 | fn test_introduce_var_break() { | 482 | fn test_extract_var_break() { |
483 | check_assist( | 483 | check_assist( |
484 | introduce_variable, | 484 | extract_variable, |
485 | " | 485 | " |
486 | fn main() { | 486 | fn main() { |
487 | let result = loop { | 487 | let result = loop { |
@@ -501,9 +501,9 @@ fn main() { | |||
501 | } | 501 | } |
502 | 502 | ||
503 | #[test] | 503 | #[test] |
504 | fn test_introduce_var_for_cast() { | 504 | fn test_extract_var_for_cast() { |
505 | check_assist( | 505 | check_assist( |
506 | introduce_variable, | 506 | extract_variable, |
507 | " | 507 | " |
508 | fn main() { | 508 | fn main() { |
509 | let v = <|>0f32 as u32<|>; | 509 | let v = <|>0f32 as u32<|>; |
@@ -519,9 +519,9 @@ fn main() { | |||
519 | } | 519 | } |
520 | 520 | ||
521 | #[test] | 521 | #[test] |
522 | fn introduce_var_field_shorthand() { | 522 | fn extract_var_field_shorthand() { |
523 | check_assist( | 523 | check_assist( |
524 | introduce_variable, | 524 | extract_variable, |
525 | r#" | 525 | r#" |
526 | struct S { | 526 | struct S { |
527 | foo: i32 | 527 | foo: i32 |
@@ -545,22 +545,22 @@ fn main() { | |||
545 | } | 545 | } |
546 | 546 | ||
547 | #[test] | 547 | #[test] |
548 | fn test_introduce_var_for_return_not_applicable() { | 548 | fn test_extract_var_for_return_not_applicable() { |
549 | check_assist_not_applicable(introduce_variable, "fn foo() { <|>return<|>; } "); | 549 | check_assist_not_applicable(extract_variable, "fn foo() { <|>return<|>; } "); |
550 | } | 550 | } |
551 | 551 | ||
552 | #[test] | 552 | #[test] |
553 | fn test_introduce_var_for_break_not_applicable() { | 553 | fn test_extract_var_for_break_not_applicable() { |
554 | check_assist_not_applicable(introduce_variable, "fn main() { loop { <|>break<|>; }; }"); | 554 | check_assist_not_applicable(extract_variable, "fn main() { loop { <|>break<|>; }; }"); |
555 | } | 555 | } |
556 | 556 | ||
557 | // FIXME: This is not quite correct, but good enough(tm) for the sorting heuristic | 557 | // FIXME: This is not quite correct, but good enough(tm) for the sorting heuristic |
558 | #[test] | 558 | #[test] |
559 | fn introduce_var_target() { | 559 | fn extract_var_target() { |
560 | check_assist_target(introduce_variable, "fn foo() -> u32 { <|>return 2 + 2<|>; }", "2 + 2"); | 560 | check_assist_target(extract_variable, "fn foo() -> u32 { <|>return 2 + 2<|>; }", "2 + 2"); |
561 | 561 | ||
562 | check_assist_target( | 562 | check_assist_target( |
563 | introduce_variable, | 563 | extract_variable, |
564 | " | 564 | " |
565 | fn main() { | 565 | fn main() { |
566 | let x = true; | 566 | let x = true; |
diff --git a/crates/ra_assists/src/lib.rs b/crates/ra_assists/src/lib.rs index 185428bd5..1745f44a5 100644 --- a/crates/ra_assists/src/lib.rs +++ b/crates/ra_assists/src/lib.rs | |||
@@ -116,6 +116,7 @@ mod handlers { | |||
116 | mod change_visibility; | 116 | mod change_visibility; |
117 | mod early_return; | 117 | mod early_return; |
118 | mod extract_struct_from_enum_variant; | 118 | mod extract_struct_from_enum_variant; |
119 | mod extract_variable; | ||
119 | mod fill_match_arms; | 120 | mod fill_match_arms; |
120 | mod fix_visibility; | 121 | mod fix_visibility; |
121 | mod flip_binexpr; | 122 | mod flip_binexpr; |
@@ -123,7 +124,6 @@ mod handlers { | |||
123 | mod flip_trait_bound; | 124 | mod flip_trait_bound; |
124 | mod inline_local_variable; | 125 | mod inline_local_variable; |
125 | mod introduce_named_lifetime; | 126 | mod introduce_named_lifetime; |
126 | mod introduce_variable; | ||
127 | mod invert_if; | 127 | mod invert_if; |
128 | mod merge_imports; | 128 | mod merge_imports; |
129 | mod merge_match_arms; | 129 | mod merge_match_arms; |
@@ -157,6 +157,7 @@ mod handlers { | |||
157 | change_visibility::change_visibility, | 157 | change_visibility::change_visibility, |
158 | early_return::convert_to_guarded_return, | 158 | early_return::convert_to_guarded_return, |
159 | extract_struct_from_enum_variant::extract_struct_from_enum_variant, | 159 | extract_struct_from_enum_variant::extract_struct_from_enum_variant, |
160 | extract_variable::extract_variable, | ||
160 | fill_match_arms::fill_match_arms, | 161 | fill_match_arms::fill_match_arms, |
161 | fix_visibility::fix_visibility, | 162 | fix_visibility::fix_visibility, |
162 | flip_binexpr::flip_binexpr, | 163 | flip_binexpr::flip_binexpr, |
@@ -164,7 +165,6 @@ mod handlers { | |||
164 | flip_trait_bound::flip_trait_bound, | 165 | flip_trait_bound::flip_trait_bound, |
165 | inline_local_variable::inline_local_variable, | 166 | inline_local_variable::inline_local_variable, |
166 | introduce_named_lifetime::introduce_named_lifetime, | 167 | introduce_named_lifetime::introduce_named_lifetime, |
167 | introduce_variable::introduce_variable, | ||
168 | invert_if::invert_if, | 168 | invert_if::invert_if, |
169 | merge_imports::merge_imports, | 169 | merge_imports::merge_imports, |
170 | merge_match_arms::merge_match_arms, | 170 | merge_match_arms::merge_match_arms, |
diff --git a/crates/ra_assists/src/tests/generated.rs b/crates/ra_assists/src/tests/generated.rs index 40a223727..31ea888c5 100644 --- a/crates/ra_assists/src/tests/generated.rs +++ b/crates/ra_assists/src/tests/generated.rs | |||
@@ -353,6 +353,24 @@ enum A { One(One) } | |||
353 | } | 353 | } |
354 | 354 | ||
355 | #[test] | 355 | #[test] |
356 | fn doctest_extract_variable() { | ||
357 | check_doc_test( | ||
358 | "extract_variable", | ||
359 | r#####" | ||
360 | fn main() { | ||
361 | <|>(1 + 2)<|> * 4; | ||
362 | } | ||
363 | "#####, | ||
364 | r#####" | ||
365 | fn main() { | ||
366 | let $0var_name = (1 + 2); | ||
367 | var_name * 4; | ||
368 | } | ||
369 | "#####, | ||
370 | ) | ||
371 | } | ||
372 | |||
373 | #[test] | ||
356 | fn doctest_fill_match_arms() { | 374 | fn doctest_fill_match_arms() { |
357 | check_doc_test( | 375 | check_doc_test( |
358 | "fill_match_arms", | 376 | "fill_match_arms", |
@@ -492,24 +510,6 @@ impl<'a> Cursor<'a> { | |||
492 | } | 510 | } |
493 | 511 | ||
494 | #[test] | 512 | #[test] |
495 | fn doctest_introduce_variable() { | ||
496 | check_doc_test( | ||
497 | "introduce_variable", | ||
498 | r#####" | ||
499 | fn main() { | ||
500 | <|>(1 + 2)<|> * 4; | ||
501 | } | ||
502 | "#####, | ||
503 | r#####" | ||
504 | fn main() { | ||
505 | let $0var_name = (1 + 2); | ||
506 | var_name * 4; | ||
507 | } | ||
508 | "#####, | ||
509 | ) | ||
510 | } | ||
511 | |||
512 | #[test] | ||
513 | fn doctest_invert_if() { | 513 | fn doctest_invert_if() { |
514 | check_doc_test( | 514 | check_doc_test( |
515 | "invert_if", | 515 | "invert_if", |