aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/completion/reference_completion.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/completion/reference_completion.rs')
-rw-r--r--crates/ra_analysis/src/completion/reference_completion.rs23
1 files changed, 12 insertions, 11 deletions
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}