diff options
author | Hasan Ali <[email protected]> | 2020-05-15 22:23:49 +0100 |
---|---|---|
committer | Hasan Ali <[email protected]> | 2020-05-16 01:09:04 +0100 |
commit | 001a86dc03104b75df732d69257d22526cf422b7 (patch) | |
tree | 4f1554da3d909c15d5e4cec7c8470687cf452467 /crates/ra_ide | |
parent | cffa70be01d4353184f874fc4768b692e255dd30 (diff) |
Fix completion and hover for module and function of same name
Diffstat (limited to 'crates/ra_ide')
-rw-r--r-- | crates/ra_ide/src/completion/complete_qualified_path.rs | 30 | ||||
-rw-r--r-- | crates/ra_ide/src/hover.rs | 17 |
2 files changed, 46 insertions, 1 deletions
diff --git a/crates/ra_ide/src/completion/complete_qualified_path.rs b/crates/ra_ide/src/completion/complete_qualified_path.rs index 7fcd22525..db7430454 100644 --- a/crates/ra_ide/src/completion/complete_qualified_path.rs +++ b/crates/ra_ide/src/completion/complete_qualified_path.rs | |||
@@ -20,7 +20,7 @@ pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionCon | |||
20 | let scope = ctx.scope(); | 20 | let scope = ctx.scope(); |
21 | let context_module = scope.module(); | 21 | let context_module = scope.module(); |
22 | 22 | ||
23 | let res = match scope.resolve_hir_path(&path) { | 23 | let res = match scope.resolve_hir_path_qualifier(&path) { |
24 | Some(res) => res, | 24 | Some(res) => res, |
25 | None => return, | 25 | None => return, |
26 | }; | 26 | }; |
@@ -226,6 +226,34 @@ mod tests { | |||
226 | } | 226 | } |
227 | 227 | ||
228 | #[test] | 228 | #[test] |
229 | fn completes_mod_with_same_name_as_function() { | ||
230 | assert_debug_snapshot!( | ||
231 | do_reference_completion( | ||
232 | r" | ||
233 | use self::my::<|>; | ||
234 | |||
235 | mod my { | ||
236 | pub struct Bar; | ||
237 | } | ||
238 | |||
239 | fn my() {} | ||
240 | " | ||
241 | ), | ||
242 | @r###" | ||
243 | [ | ||
244 | CompletionItem { | ||
245 | label: "Bar", | ||
246 | source_range: 31..31, | ||
247 | delete: 31..31, | ||
248 | insert: "Bar", | ||
249 | kind: Struct, | ||
250 | }, | ||
251 | ] | ||
252 | "### | ||
253 | ); | ||
254 | } | ||
255 | |||
256 | #[test] | ||
229 | fn path_visibility() { | 257 | fn path_visibility() { |
230 | assert_debug_snapshot!( | 258 | assert_debug_snapshot!( |
231 | do_reference_completion( | 259 | do_reference_completion( |
diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs index 06d4f1c63..befa977c7 100644 --- a/crates/ra_ide/src/hover.rs +++ b/crates/ra_ide/src/hover.rs | |||
@@ -921,4 +921,21 @@ fn func(foo: i32) { if true { <|>foo; }; } | |||
921 | &["unsafe trait foo"], | 921 | &["unsafe trait foo"], |
922 | ); | 922 | ); |
923 | } | 923 | } |
924 | |||
925 | #[test] | ||
926 | fn test_hover_mod_with_same_name_as_function() { | ||
927 | check_hover_result( | ||
928 | " | ||
929 | //- /lib.rs | ||
930 | use self::m<|>y::Bar; | ||
931 | |||
932 | mod my { | ||
933 | pub struct Bar; | ||
934 | } | ||
935 | |||
936 | fn my() {} | ||
937 | ", | ||
938 | &["mod my"], | ||
939 | ); | ||
940 | } | ||
924 | } | 941 | } |