From 5b0e347f89be317d21fd894c0ccf4abee5645429 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 16:30:02 +0300 Subject: Make resolve_path cancelable --- crates/ra_analysis/src/completion/reference_completion.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_analysis/src/completion') diff --git a/crates/ra_analysis/src/completion/reference_completion.rs b/crates/ra_analysis/src/completion/reference_completion.rs index 1faa70a18..41df881b3 100644 --- a/crates/ra_analysis/src/completion/reference_completion.rs +++ b/crates/ra_analysis/src/completion/reference_completion.rs @@ -157,7 +157,7 @@ fn complete_path( return Ok(()); } path.segments.pop(); - let target_module = match module.resolve_path(path) { + let target_module = match module.resolve_path(path)? { None => return Ok(()), Some(it) => it, }; -- cgit v1.2.3 From 68f66e0f446a2bd2385cfd236856f2a73bd58a3d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 16:32:36 +0300 Subject: add db to resolve_path --- crates/ra_analysis/src/completion/reference_completion.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_analysis/src/completion') diff --git a/crates/ra_analysis/src/completion/reference_completion.rs b/crates/ra_analysis/src/completion/reference_completion.rs index 41df881b3..924d2440f 100644 --- a/crates/ra_analysis/src/completion/reference_completion.rs +++ b/crates/ra_analysis/src/completion/reference_completion.rs @@ -157,7 +157,7 @@ fn complete_path( return Ok(()); } path.segments.pop(); - let target_module = match module.resolve_path(path)? { + let target_module = match module.resolve_path(db, path)? { None => return Ok(()), Some(it) => it, }; -- cgit v1.2.3 From f4860870dae309f5287a287de0aa3a1a1b1de36b Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 16:55:56 +0300 Subject: scope-based resolve path --- .../ra_analysis/src/completion/reference_completion.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'crates/ra_analysis/src/completion') diff --git a/crates/ra_analysis/src/completion/reference_completion.rs b/crates/ra_analysis/src/completion/reference_completion.rs index 924d2440f..a0af59178 100644 --- a/crates/ra_analysis/src/completion/reference_completion.rs +++ b/crates/ra_analysis/src/completion/reference_completion.rs @@ -42,8 +42,7 @@ pub(super) fn completions( let module_scope = module.scope(db)?; acc.extend( module_scope - .items - .iter() + .entries() .filter(|(_name, res)| { // Don't expose this item match res.import { @@ -162,14 +161,11 @@ fn complete_path( Some(it) => it, }; let module_scope = target_module.scope(db)?; - let completions = module_scope - .items - .iter() - .map(|(name, _res)| CompletionItem { - label: name.to_string(), - lookup: None, - snippet: None, - }); + let completions = module_scope.entries().map(|(name, _res)| CompletionItem { + label: name.to_string(), + lookup: None, + snippet: None, + }); acc.extend(completions); Ok(()) } -- cgit v1.2.3 From aa7fd563a4b8817223ac50fa22cd946ce354f47d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 18:45:16 +0300 Subject: use ctry --- crates/ra_analysis/src/completion/mod.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'crates/ra_analysis/src/completion') 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( original_file.reparse(&edit) }; - let module = match ModuleDescriptor::guess_from_position(db, position)? { - None => return Ok(None), - Some(it) => it, - }; + let module = ctry!(ModuleDescriptor::guess_from_position(db, position)?); let mut res = Vec::new(); let mut has_completions = false; -- cgit v1.2.3 From 192e2bbb0e5c772d43ec61d36de56a0f7062610e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 19:56:03 +0300 Subject: resolve_path works with DefIds --- crates/ra_analysis/src/completion/reference_completion.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'crates/ra_analysis/src/completion') diff --git a/crates/ra_analysis/src/completion/reference_completion.rs b/crates/ra_analysis/src/completion/reference_completion.rs index a0af59178..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::{ descriptors::{ module::{ModuleDescriptor}, function::FnScopes, + Def, Path, }, Cancelable @@ -156,10 +157,14 @@ fn complete_path( return Ok(()); } path.segments.pop(); - let target_module = match module.resolve_path(db, path)? { + let def_id = match module.resolve_path(db, path)? { None => return Ok(()), Some(it) => it, }; + let target_module = match def_id.resolve(db)? { + Def::Module(it) => it, + Def::Item => return Ok(()), + }; let module_scope = target_module.scope(db)?; let completions = module_scope.entries().map(|(name, _res)| CompletionItem { label: name.to_string(), -- cgit v1.2.3