diff options
Diffstat (limited to 'crates/ra_ssr')
-rw-r--r-- | crates/ra_ssr/src/tests.rs | 102 |
1 files changed, 76 insertions, 26 deletions
diff --git a/crates/ra_ssr/src/tests.rs b/crates/ra_ssr/src/tests.rs index c7c37af2f..11512c8cc 100644 --- a/crates/ra_ssr/src/tests.rs +++ b/crates/ra_ssr/src/tests.rs | |||
@@ -154,8 +154,19 @@ fn ssr_function_to_method() { | |||
154 | fn ssr_nested_function() { | 154 | fn ssr_nested_function() { |
155 | assert_ssr_transform( | 155 | assert_ssr_transform( |
156 | "foo($a, $b, $c) ==>> bar($c, baz($a, $b))", | 156 | "foo($a, $b, $c) ==>> bar($c, baz($a, $b))", |
157 | "fn foo() {} fn main { foo (x + value.method(b), x+y-z, true && false) }", | 157 | r#" |
158 | expect![["fn foo() {} fn main { bar(true && false, baz(x + value.method(b), x+y-z)) }"]], | 158 | //- /lib.rs crate:foo |
159 | fn foo() {} | ||
160 | fn bar() {} | ||
161 | fn baz() {} | ||
162 | fn main { foo (x + value.method(b), x+y-z, true && false) } | ||
163 | "#, | ||
164 | expect![[r#" | ||
165 | fn foo() {} | ||
166 | fn bar() {} | ||
167 | fn baz() {} | ||
168 | fn main { bar(true && false, baz(x + value.method(b), x+y-z)) } | ||
169 | "#]], | ||
159 | ) | 170 | ) |
160 | } | 171 | } |
161 | 172 | ||
@@ -181,8 +192,8 @@ fn ssr_with_extra_space() { | |||
181 | fn ssr_keeps_nested_comment() { | 192 | fn ssr_keeps_nested_comment() { |
182 | assert_ssr_transform( | 193 | assert_ssr_transform( |
183 | "foo($x) ==>> bar($x)", | 194 | "foo($x) ==>> bar($x)", |
184 | "fn foo() {} fn main() { foo(other(5 /* using 5 */)) }", | 195 | "fn foo() {} fn bar() {} fn main() { foo(other(5 /* using 5 */)) }", |
185 | expect![["fn foo() {} fn main() { bar(other(5 /* using 5 */)) }"]], | 196 | expect![["fn foo() {} fn bar() {} fn main() { bar(other(5 /* using 5 */)) }"]], |
186 | ) | 197 | ) |
187 | } | 198 | } |
188 | 199 | ||
@@ -190,17 +201,25 @@ fn ssr_keeps_nested_comment() { | |||
190 | fn ssr_keeps_comment() { | 201 | fn ssr_keeps_comment() { |
191 | assert_ssr_transform( | 202 | assert_ssr_transform( |
192 | "foo($x) ==>> bar($x)", | 203 | "foo($x) ==>> bar($x)", |
193 | "fn foo() {} fn main() { foo(5 /* using 5 */) }", | 204 | "fn foo() {} fn bar() {} fn main() { foo(5 /* using 5 */) }", |
194 | expect![["fn foo() {} fn main() { bar(5)/* using 5 */ }"]], | 205 | expect![["fn foo() {} fn bar() {} fn main() { bar(5)/* using 5 */ }"]], |
195 | ) | 206 | ) |
196 | } | 207 | } |
197 | 208 | ||
198 | #[test] | 209 | #[test] |
199 | fn ssr_struct_lit() { | 210 | fn ssr_struct_lit() { |
200 | assert_ssr_transform( | 211 | assert_ssr_transform( |
201 | "foo{a: $a, b: $b} ==>> foo::new($a, $b)", | 212 | "Foo{a: $a, b: $b} ==>> Foo::new($a, $b)", |
202 | "fn foo() {} fn main() { foo{b:2, a:1} }", | 213 | r#" |
203 | expect![["fn foo() {} fn main() { foo::new(1, 2) }"]], | 214 | struct Foo() {} |
215 | impl Foo { fn new() {} } | ||
216 | fn main() { Foo{b:2, a:1} } | ||
217 | "#, | ||
218 | expect![[r#" | ||
219 | struct Foo() {} | ||
220 | impl Foo { fn new() {} } | ||
221 | fn main() { Foo::new(1, 2) } | ||
222 | "#]], | ||
204 | ) | 223 | ) |
205 | } | 224 | } |
206 | 225 | ||
@@ -312,7 +331,7 @@ fn match_struct_instantiation() { | |||
312 | fn match_path() { | 331 | fn match_path() { |
313 | let code = r#" | 332 | let code = r#" |
314 | mod foo { | 333 | mod foo { |
315 | fn bar() {} | 334 | pub fn bar() {} |
316 | } | 335 | } |
317 | fn f() {foo::bar(42)}"#; | 336 | fn f() {foo::bar(42)}"#; |
318 | assert_matches("foo::bar", code, &["foo::bar"]); | 337 | assert_matches("foo::bar", code, &["foo::bar"]); |
@@ -413,8 +432,8 @@ fn no_match_split_expression() { | |||
413 | fn replace_function_call() { | 432 | fn replace_function_call() { |
414 | assert_ssr_transform( | 433 | assert_ssr_transform( |
415 | "foo() ==>> bar()", | 434 | "foo() ==>> bar()", |
416 | "fn foo() {} fn f1() {foo(); foo();}", | 435 | "fn foo() {} fn bar() {} fn f1() {foo(); foo();}", |
417 | expect![["fn foo() {} fn f1() {bar(); bar();}"]], | 436 | expect![["fn foo() {} fn bar() {} fn f1() {bar(); bar();}"]], |
418 | ); | 437 | ); |
419 | } | 438 | } |
420 | 439 | ||
@@ -422,8 +441,8 @@ fn replace_function_call() { | |||
422 | fn replace_function_call_with_placeholders() { | 441 | fn replace_function_call_with_placeholders() { |
423 | assert_ssr_transform( | 442 | assert_ssr_transform( |
424 | "foo($a, $b) ==>> bar($b, $a)", | 443 | "foo($a, $b) ==>> bar($b, $a)", |
425 | "fn foo() {} fn f1() {foo(5, 42)}", | 444 | "fn foo() {} fn bar() {} fn f1() {foo(5, 42)}", |
426 | expect![["fn foo() {} fn f1() {bar(42, 5)}"]], | 445 | expect![["fn foo() {} fn bar() {} fn f1() {bar(42, 5)}"]], |
427 | ); | 446 | ); |
428 | } | 447 | } |
429 | 448 | ||
@@ -431,26 +450,40 @@ fn replace_function_call_with_placeholders() { | |||
431 | fn replace_nested_function_calls() { | 450 | fn replace_nested_function_calls() { |
432 | assert_ssr_transform( | 451 | assert_ssr_transform( |
433 | "foo($a) ==>> bar($a)", | 452 | "foo($a) ==>> bar($a)", |
434 | "fn foo() {} fn f1() {foo(foo(42))}", | 453 | "fn foo() {} fn bar() {} fn f1() {foo(foo(42))}", |
435 | expect![["fn foo() {} fn f1() {bar(bar(42))}"]], | 454 | expect![["fn foo() {} fn bar() {} fn f1() {bar(bar(42))}"]], |
436 | ); | 455 | ); |
437 | } | 456 | } |
438 | 457 | ||
439 | #[test] | 458 | #[test] |
440 | fn replace_type() { | 459 | fn replace_associated_function_call() { |
441 | assert_ssr_transform( | 460 | assert_ssr_transform( |
442 | "Result<(), $a> ==>> Option<$a>", | 461 | "Foo::new() ==>> Bar::new()", |
443 | "struct Result<T, E> {} fn f1() -> Result<(), Vec<Error>> {foo()}", | 462 | r#" |
444 | expect![["struct Result<T, E> {} fn f1() -> Option<Vec<Error>> {foo()}"]], | 463 | struct Foo {} |
464 | impl Foo { fn new() {} } | ||
465 | struct Bar {} | ||
466 | impl Bar { fn new() {} } | ||
467 | fn f1() {Foo::new();} | ||
468 | "#, | ||
469 | expect![[r#" | ||
470 | struct Foo {} | ||
471 | impl Foo { fn new() {} } | ||
472 | struct Bar {} | ||
473 | impl Bar { fn new() {} } | ||
474 | fn f1() {Bar::new();} | ||
475 | "#]], | ||
445 | ); | 476 | ); |
446 | } | 477 | } |
447 | 478 | ||
448 | #[test] | 479 | #[test] |
449 | fn replace_struct_init() { | 480 | fn replace_type() { |
450 | assert_ssr_transform( | 481 | assert_ssr_transform( |
451 | "Foo {a: $a, b: $b} ==>> Foo::new($a, $b)", | 482 | "Result<(), $a> ==>> Option<$a>", |
452 | "struct Foo {} fn f1() {Foo{b: 1, a: 2}}", | 483 | "struct Result<T, E> {} struct Option<T> {} fn f1() -> Result<(), Vec<Error>> {foo()}", |
453 | expect![["struct Foo {} fn f1() {Foo::new(2, 1)}"]], | 484 | expect![[ |
485 | "struct Result<T, E> {} struct Option<T> {} fn f1() -> Option<Vec<Error>> {foo()}" | ||
486 | ]], | ||
454 | ); | 487 | ); |
455 | } | 488 | } |
456 | 489 | ||
@@ -491,8 +524,23 @@ fn match_binary_op() { | |||
491 | fn multiple_rules() { | 524 | fn multiple_rules() { |
492 | assert_ssr_transforms( | 525 | assert_ssr_transforms( |
493 | &["$a + 1 ==>> add_one($a)", "$a + $b ==>> add($a, $b)"], | 526 | &["$a + 1 ==>> add_one($a)", "$a + $b ==>> add($a, $b)"], |
494 | "fn f() -> i32 {3 + 2 + 1}", | 527 | "fn add() {} fn add_one() {} fn f() -> i32 {3 + 2 + 1}", |
495 | expect![["fn f() -> i32 {add_one(add(3, 2))}"]], | 528 | expect![["fn add() {} fn add_one() {} fn f() -> i32 {add_one(add(3, 2))}"]], |
529 | ) | ||
530 | } | ||
531 | |||
532 | #[test] | ||
533 | fn multiple_rules_with_nested_matches() { | ||
534 | assert_ssr_transforms( | ||
535 | &["foo1($a) ==>> bar1($a)", "foo2($a) ==>> bar2($a)"], | ||
536 | r#" | ||
537 | fn foo1() {} fn foo2() {} fn bar1() {} fn bar2() {} | ||
538 | fn f() {foo1(foo2(foo1(foo2(foo1(42)))))} | ||
539 | "#, | ||
540 | expect![[r#" | ||
541 | fn foo1() {} fn foo2() {} fn bar1() {} fn bar2() {} | ||
542 | fn f() {bar1(bar2(bar1(bar2(bar1(42)))))} | ||
543 | "#]], | ||
496 | ) | 544 | ) |
497 | } | 545 | } |
498 | 546 | ||
@@ -524,12 +572,14 @@ fn replace_within_macro_expansion() { | |||
524 | macro_rules! macro1 { | 572 | macro_rules! macro1 { |
525 | ($a:expr) => {$a} | 573 | ($a:expr) => {$a} |
526 | } | 574 | } |
575 | fn bar() {} | ||
527 | fn f() {macro1!(5.x().foo().o2())} | 576 | fn f() {macro1!(5.x().foo().o2())} |
528 | "#, | 577 | "#, |
529 | expect![[r#" | 578 | expect![[r#" |
530 | macro_rules! macro1 { | 579 | macro_rules! macro1 { |
531 | ($a:expr) => {$a} | 580 | ($a:expr) => {$a} |
532 | } | 581 | } |
582 | fn bar() {} | ||
533 | fn f() {macro1!(bar(5.x()).o2())} | 583 | fn f() {macro1!(bar(5.x()).o2())} |
534 | "#]], | 584 | "#]], |
535 | ) | 585 | ) |