diff options
Diffstat (limited to 'crates/ra_ssr/src/tests.rs')
-rw-r--r-- | crates/ra_ssr/src/tests.rs | 39 |
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] |
903 | fn 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] | ||
903 | fn replace_local_variable_reference() { | 942 | fn 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 |