aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ssr/src/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ssr/src/tests.rs')
-rw-r--r--crates/ra_ssr/src/tests.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/crates/ra_ssr/src/tests.rs b/crates/ra_ssr/src/tests.rs
index 6a44ef378..f5ffff7cc 100644
--- a/crates/ra_ssr/src/tests.rs
+++ b/crates/ra_ssr/src/tests.rs
@@ -900,6 +900,45 @@ fn ufcs_matches_method_call() {
900} 900}
901 901
902#[test] 902#[test]
903fn pattern_is_a_single_segment_path() {
904 mark::check!(pattern_is_a_single_segment_path);
905 // The first function should not be altered because the `foo` in scope at the cursor position is
906 // a different `foo`. This case is special because "foo" can be parsed as a pattern (BIND_PAT ->
907 // NAME -> IDENT), which contains no path. If we're not careful we'll end up matching the `foo`
908 // in `let foo` from the first function. Whether we should match the `let foo` in the second
909 // function is less clear. At the moment, we don't. Doing so sounds like a rename operation,
910 // which isn't really what SSR is for, especially since the replacement `bar` must be able to be
911 // resolved, which means if we rename `foo` we'll get a name collision.
912 assert_ssr_transform(
913 "foo ==>> bar",
914 r#"
915 fn f1() -> i32 {
916 let foo = 1;
917 let bar = 2;
918 foo
919 }
920 fn f1() -> i32 {
921 let foo = 1;
922 let bar = 2;
923 foo<|>
924 }
925 "#,
926 expect![[r#"
927 fn f1() -> i32 {
928 let foo = 1;
929 let bar = 2;
930 foo
931 }
932 fn f1() -> i32 {
933 let foo = 1;
934 let bar = 2;
935 bar
936 }
937 "#]],
938 );
939}
940
941#[test]
903fn replace_local_variable_reference() { 942fn replace_local_variable_reference() {
904 // The pattern references a local variable `foo` in the block containing the cursor. We should 943 // The pattern references a local variable `foo` in the block containing the cursor. We should
905 // only replace references to this variable `foo`, not other variables that just happen to have 944 // only replace references to this variable `foo`, not other variables that just happen to have