diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-11-27 16:56:38 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-11-27 16:56:38 +0000 |
commit | 9f08341aa486ea59cb488635f19e960523568fb8 (patch) | |
tree | 160b6aecfabb2f7dac111763b35b6f52ba6ff25b /crates/ra_analysis/src/completion | |
parent | 6bb06addf8d5100cd1125c40d3dfa5f7613b42c1 (diff) | |
parent | 192e2bbb0e5c772d43ec61d36de56a0f7062610e (diff) |
Merge #246
246: Resolve path r=matklad a=matklad
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_analysis/src/completion')
-rw-r--r-- | crates/ra_analysis/src/completion/mod.rs | 5 | ||||
-rw-r--r-- | crates/ra_analysis/src/completion/reference_completion.rs | 23 |
2 files changed, 13 insertions, 15 deletions
diff --git a/crates/ra_analysis/src/completion/mod.rs b/crates/ra_analysis/src/completion/mod.rs index c7717ab61..5ef278127 100644 --- a/crates/ra_analysis/src/completion/mod.rs +++ b/crates/ra_analysis/src/completion/mod.rs | |||
@@ -38,10 +38,7 @@ pub(crate) fn completions( | |||
38 | original_file.reparse(&edit) | 38 | original_file.reparse(&edit) |
39 | }; | 39 | }; |
40 | 40 | ||
41 | let module = match ModuleDescriptor::guess_from_position(db, position)? { | 41 | let module = ctry!(ModuleDescriptor::guess_from_position(db, position)?); |
42 | None => return Ok(None), | ||
43 | Some(it) => it, | ||
44 | }; | ||
45 | 42 | ||
46 | let mut res = Vec::new(); | 43 | let mut res = Vec::new(); |
47 | let mut has_completions = false; | 44 | let mut has_completions = false; |
diff --git a/crates/ra_analysis/src/completion/reference_completion.rs b/crates/ra_analysis/src/completion/reference_completion.rs index 1faa70a18..858b52e76 100644 --- a/crates/ra_analysis/src/completion/reference_completion.rs +++ b/crates/ra_analysis/src/completion/reference_completion.rs | |||
@@ -13,6 +13,7 @@ use crate::{ | |||
13 | descriptors::{ | 13 | descriptors::{ |
14 | module::{ModuleDescriptor}, | 14 | module::{ModuleDescriptor}, |
15 | function::FnScopes, | 15 | function::FnScopes, |
16 | Def, | ||
16 | Path, | 17 | Path, |
17 | }, | 18 | }, |
18 | Cancelable | 19 | Cancelable |
@@ -42,8 +43,7 @@ pub(super) fn completions( | |||
42 | let module_scope = module.scope(db)?; | 43 | let module_scope = module.scope(db)?; |
43 | acc.extend( | 44 | acc.extend( |
44 | module_scope | 45 | module_scope |
45 | .items | 46 | .entries() |
46 | .iter() | ||
47 | .filter(|(_name, res)| { | 47 | .filter(|(_name, res)| { |
48 | // Don't expose this item | 48 | // Don't expose this item |
49 | match res.import { | 49 | match res.import { |
@@ -157,19 +157,20 @@ fn complete_path( | |||
157 | return Ok(()); | 157 | return Ok(()); |
158 | } | 158 | } |
159 | path.segments.pop(); | 159 | path.segments.pop(); |
160 | let target_module = match module.resolve_path(path) { | 160 | let def_id = match module.resolve_path(db, path)? { |
161 | None => return Ok(()), | 161 | None => return Ok(()), |
162 | Some(it) => it, | 162 | Some(it) => it, |
163 | }; | 163 | }; |
164 | let target_module = match def_id.resolve(db)? { | ||
165 | Def::Module(it) => it, | ||
166 | Def::Item => return Ok(()), | ||
167 | }; | ||
164 | let module_scope = target_module.scope(db)?; | 168 | let module_scope = target_module.scope(db)?; |
165 | let completions = module_scope | 169 | let completions = module_scope.entries().map(|(name, _res)| CompletionItem { |
166 | .items | 170 | label: name.to_string(), |
167 | .iter() | 171 | lookup: None, |
168 | .map(|(name, _res)| CompletionItem { | 172 | snippet: None, |
169 | label: name.to_string(), | 173 | }); |
170 | lookup: None, | ||
171 | snippet: None, | ||
172 | }); | ||
173 | acc.extend(completions); | 174 | acc.extend(completions); |
174 | Ok(()) | 175 | Ok(()) |
175 | } | 176 | } |