From 10f4d4b74cd7e072bf5e8d3fb57c76f35ea03e1d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 14:11:36 +0300 Subject: Make nameresolution resilient to reparsing We now store item id's instead of local syntax ptrs, and item ids don't change if you type inside a single function. --- crates/ra_analysis/src/completion/reference_completion.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 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 d301a3c02..1faa70a18 100644 --- a/crates/ra_analysis/src/completion/reference_completion.rs +++ b/crates/ra_analysis/src/completion/reference_completion.rs @@ -46,9 +46,12 @@ pub(super) fn completions( .iter() .filter(|(_name, res)| { // Don't expose this item - match res.import_name { + match res.import { None => true, - Some(ptr) => !ptr.range().is_subrange(&name_ref.syntax().range()), + Some(import) => { + let range = import.range(db, module.source().file_id()); + !range.is_subrange(&name_ref.syntax().range()) + } } }) .map(|(name, _res)| CompletionItem { -- cgit v1.2.3