From 74beb5bfcbc33d6232a9b08b4df4bcfd781790e9 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 25 Jan 2019 10:29:00 +0300 Subject: simplify --- crates/ra_hir/src/nameres.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'crates/ra_hir/src/nameres.rs') diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs index 32afd8e0a..88ad0a44d 100644 --- a/crates/ra_hir/src/nameres.rs +++ b/crates/ra_hir/src/nameres.rs @@ -19,6 +19,7 @@ pub(crate) mod lower; use std::sync::Arc; use ra_db::CrateId; +use ra_arena::map::ArenaMap; use test_utils::tested_by; use rustc_hash::{FxHashMap, FxHashSet}; @@ -37,7 +38,14 @@ use crate::{ // FIXME: currenty we compute item map per source-root. We should do it per crate instead. #[derive(Default, Debug, PartialEq, Eq)] pub struct ItemMap { - pub per_module: FxHashMap, + per_module: ArenaMap, +} + +impl std::ops::Index for ItemMap { + type Output = ModuleScope; + fn index(&self, id: ModuleId) -> &ModuleScope { + &self.per_module[id] + } } #[derive(Debug, Default, PartialEq, Eq, Clone)] @@ -308,7 +316,7 @@ where } fn update(&mut self, module_id: ModuleId, f: impl FnOnce(&mut ModuleScope)) { - let module_items = self.result.per_module.get_mut(&module_id).unwrap(); + let module_items = self.result.per_module.get_mut(module_id).unwrap(); f(module_items) } } @@ -380,7 +388,7 @@ impl ItemMap { return (def, ReachedFixedPoint::Yes); } - match self.per_module[&module.module_id].items.get(&segment.name) { + match self[module.module_id].items.get(&segment.name) { Some(res) if !res.def.is_none() => res.def, _ => { log::debug!("path segment {:?} not found", segment.name); -- cgit v1.2.3