From f7f7c2aff80f0870f0d71bf70075e3b5bf68994f Mon Sep 17 00:00:00 2001 From: uHOOCCOOHu Date: Sun, 8 Sep 2019 00:05:58 +0800 Subject: Revert "Replace with immutable map to avoid heavy cloning" This reverts commit 2c494eb803c88ef5d23607c3b156fce60c2b8076. See: https://github.com/rust-analyzer/rust-analyzer/pull/1784#issuecomment-529119924 --- crates/ra_hir/Cargo.toml | 1 - crates/ra_hir/src/nameres.rs | 7 ++----- crates/ra_hir/src/nameres/collector.rs | 3 --- 3 files changed, 2 insertions(+), 9 deletions(-) (limited to 'crates/ra_hir') diff --git a/crates/ra_hir/Cargo.toml b/crates/ra_hir/Cargo.toml index f955dc3e6..d9bed4dda 100644 --- a/crates/ra_hir/Cargo.toml +++ b/crates/ra_hir/Cargo.toml @@ -6,7 +6,6 @@ authors = ["rust-analyzer developers"] [dependencies] arrayvec = "0.4.10" -im = "13.0.0" log = "0.4.5" relative-path = "0.4.0" rustc-hash = "1.0" diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs index 7e5138d05..befbb2a9b 100644 --- a/crates/ra_hir/src/nameres.rs +++ b/crates/ra_hir/src/nameres.rs @@ -54,7 +54,6 @@ mod mod_resolution; #[cfg(test)] mod tests; -use std::hash::BuildHasherDefault; use std::sync::Arc; use once_cell::sync::Lazy; @@ -62,7 +61,7 @@ use ra_arena::{impl_arena_id, Arena, RawId}; use ra_db::{Edition, FileId}; use ra_prof::profile; use ra_syntax::ast; -use rustc_hash::{FxHashMap, FxHashSet, FxHasher}; +use rustc_hash::{FxHashMap, FxHashSet}; use test_utils::tested_by; use crate::{ @@ -74,8 +73,6 @@ use crate::{ AstId, BuiltinType, Crate, HirFileId, MacroDef, Module, ModuleDef, Name, Path, PathKind, Trait, }; -pub(crate) type ImmFxHashMap = im::HashMap>; - pub(crate) use self::raw::{ImportSourceMap, RawItems}; pub use self::{ @@ -142,7 +139,7 @@ pub(crate) struct ModuleData { pub struct ModuleScope { items: FxHashMap, macros: FxHashMap, - textual_macros: ImmFxHashMap, + textual_macros: FxHashMap, } static BUILTIN_SCOPE: Lazy> = Lazy::new(|| { diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index 3803c7185..10c32ffa1 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs @@ -631,7 +631,6 @@ where modules[res].parent = Some(self.module_id); modules[res].declaration = Some(declaration); modules[res].definition = definition; - // Cloning immutable map is lazy and fast modules[res].scope.textual_macros = modules[self.module_id].scope.textual_macros.clone(); modules[self.module_id].children.insert(name.clone(), res); let resolution = Resolution { @@ -708,8 +707,6 @@ where } fn import_all_textual_macros(&mut self, module_id: CrateModuleId) { - // `clone()` is needed here to avoid mutable borrow `self.def_collector` when first borrow is alive - // Cloning immutable map is lazy and fast let macros = self.def_collector.def_map[module_id].scope.textual_macros.clone(); for (name, macro_) in macros { self.def_collector.define_textual_macro(self.module_id, name.clone(), macro_.id); -- cgit v1.2.3