From 86b66067f6321382cd72ec29c49d166da46fc3f8 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 19 Feb 2020 14:32:22 +0100 Subject: Don't store deriveable Module info in NameDefinition --- crates/ra_ide/src/references/search_scope.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'crates/ra_ide/src/references/search_scope.rs') diff --git a/crates/ra_ide/src/references/search_scope.rs b/crates/ra_ide/src/references/search_scope.rs index 279f57be0..f9bbe64a4 100644 --- a/crates/ra_ide/src/references/search_scope.rs +++ b/crates/ra_ide/src/references/search_scope.rs @@ -19,10 +19,17 @@ pub struct SearchScope { } impl SearchScope { + fn empty() -> SearchScope { + SearchScope { entries: FxHashMap::default() } + } + pub(crate) fn for_def(def: &NameDefinition, db: &RootDatabase) -> SearchScope { let _p = profile("search_scope"); - - let module_src = def.container.definition_source(db); + let module = match def.module(db) { + Some(it) => it, + None => return SearchScope::empty(), + }; + let module_src = module.definition_source(db); let file_id = module_src.file_id.original_file(db); if let NameKind::Local(var) = def.kind { @@ -39,7 +46,7 @@ impl SearchScope { let vis = def.visibility.as_ref().map(|v| v.syntax().to_string()).unwrap_or_default(); if vis.as_str() == "pub(super)" { - if let Some(parent_module) = def.container.parent(db) { + if let Some(parent_module) = module.parent(db) { let mut res = FxHashMap::default(); let parent_src = parent_module.definition_source(db); let file_id = parent_src.file_id.original_file(db); @@ -72,7 +79,7 @@ impl SearchScope { return SearchScope::new(res); } if vis.as_str() == "pub" { - let krate = def.container.krate(); + let krate = module.krate(); for rev_dep in krate.reverse_dependencies(db) { let root_file = rev_dep.root_file(db); let source_root_id = db.file_source_root(root_file); -- cgit v1.2.3