]> git.lizzy.rs Git - rust.git/commitdiff
Remove `module_lang_items`
authorJonas Schievink <jonasschievink@gmail.com>
Wed, 16 Dec 2020 23:26:01 +0000 (00:26 +0100)
committerJonas Schievink <jonasschievink@gmail.com>
Wed, 16 Dec 2020 23:26:01 +0000 (00:26 +0100)
It isn't used anywhere except in `crate_lang_items`. Remove it to
slightly reduce memory usage and simplify the code.

crates/hir/src/db.rs
crates/hir_def/src/db.rs
crates/hir_def/src/lang_item.rs
crates/ide_db/src/apply_change.rs

index 8d949b26476826dbacbac09e8f5ee0041ac3bc4c..d01e1b33d990914e4843bdf2d320f6fa95cb5f28 100644 (file)
@@ -6,8 +6,8 @@
     FunctionDataQuery, GenericParamsQuery, ImplDataQuery, ImportMapQuery, InternConstQuery,
     InternDatabase, InternDatabaseStorage, InternEnumQuery, InternFunctionQuery, InternImplQuery,
     InternStaticQuery, InternStructQuery, InternTraitQuery, InternTypeAliasQuery, InternUnionQuery,
-    ItemTreeQuery, LangItemQuery, ModuleLangItemsQuery, StaticDataQuery, StructDataQuery,
-    TraitDataQuery, TypeAliasDataQuery, UnionDataQuery,
+    ItemTreeQuery, LangItemQuery, StaticDataQuery, StructDataQuery, TraitDataQuery,
+    TypeAliasDataQuery, UnionDataQuery,
 };
 pub use hir_expand::db::{
     AstDatabase, AstDatabaseStorage, AstIdMapQuery, InternEagerExpansionQuery, InternMacroQuery,
index 7f250da3307f59da491726859c4c1cfd444837ef..d1a459066d70dd6ee3122cd61a581102207d0a82 100644 (file)
@@ -16,8 +16,8 @@
     lang_item::{LangItemTarget, LangItems},
     nameres::CrateDefMap,
     AttrDefId, ConstId, ConstLoc, DefWithBodyId, EnumId, EnumLoc, FunctionId, FunctionLoc,
-    GenericDefId, ImplId, ImplLoc, ModuleId, StaticId, StaticLoc, StructId, StructLoc, TraitId,
-    TraitLoc, TypeAliasId, TypeAliasLoc, UnionId, UnionLoc,
+    GenericDefId, ImplId, ImplLoc, StaticId, StaticLoc, StructId, StructLoc, TraitId, TraitLoc,
+    TypeAliasId, TypeAliasLoc, UnionId, UnionLoc,
 };
 
 #[salsa::query_group(InternDatabaseStorage)]
@@ -95,9 +95,6 @@ pub trait DefDatabase: InternDatabase + AstDatabase + Upcast<dyn AstDatabase> {
     #[salsa::invoke(Attrs::attrs_query)]
     fn attrs(&self, def: AttrDefId) -> Attrs;
 
-    #[salsa::invoke(LangItems::module_lang_items_query)]
-    fn module_lang_items(&self, module: ModuleId) -> Option<Arc<LangItems>>;
-
     #[salsa::invoke(LangItems::crate_lang_items_query)]
     fn crate_lang_items(&self, krate: CrateId) -> Arc<LangItems>;
 
index 063eadccb2dbd3043ad6bc7d5502a3fac5e97995..30188b740d3cb90dea3bddf02763a4d69d0a90a0 100644 (file)
@@ -8,8 +8,8 @@
 use syntax::SmolStr;
 
 use crate::{
-    db::DefDatabase, AdtId, AttrDefId, CrateId, EnumId, FunctionId, ImplId, ModuleDefId, ModuleId,
-    StaticId, StructId, TraitId,
+    db::DefDatabase, AdtId, AttrDefId, CrateId, EnumId, FunctionId, ImplId, ModuleDefId, StaticId,
+    StructId, TraitId,
 };
 
 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -84,27 +84,34 @@ pub(crate) fn crate_lang_items_query(db: &dyn DefDatabase, krate: CrateId) -> Ar
 
         let crate_def_map = db.crate_def_map(krate);
 
-        crate_def_map
-            .modules
-            .iter()
-            .filter_map(|(local_id, _)| db.module_lang_items(ModuleId { krate, local_id }))
-            .for_each(|it| lang_items.items.extend(it.items.iter().map(|(k, v)| (k.clone(), *v))));
-
-        Arc::new(lang_items)
-    }
+        for (_, module_data) in crate_def_map.modules.iter() {
+            for impl_def in module_data.scope.impls() {
+                lang_items.collect_lang_item(db, impl_def, LangItemTarget::ImplDefId)
+            }
 
-    pub(crate) fn module_lang_items_query(
-        db: &dyn DefDatabase,
-        module: ModuleId,
-    ) -> Option<Arc<LangItems>> {
-        let _p = profile::span("module_lang_items_query");
-        let mut lang_items = LangItems::default();
-        lang_items.collect_lang_items(db, module);
-        if lang_items.items.is_empty() {
-            None
-        } else {
-            Some(Arc::new(lang_items))
+            for def in module_data.scope.declarations() {
+                match def {
+                    ModuleDefId::TraitId(trait_) => {
+                        lang_items.collect_lang_item(db, trait_, LangItemTarget::TraitId)
+                    }
+                    ModuleDefId::AdtId(AdtId::EnumId(e)) => {
+                        lang_items.collect_lang_item(db, e, LangItemTarget::EnumId)
+                    }
+                    ModuleDefId::AdtId(AdtId::StructId(s)) => {
+                        lang_items.collect_lang_item(db, s, LangItemTarget::StructId)
+                    }
+                    ModuleDefId::FunctionId(f) => {
+                        lang_items.collect_lang_item(db, f, LangItemTarget::FunctionId)
+                    }
+                    ModuleDefId::StaticId(s) => {
+                        lang_items.collect_lang_item(db, s, LangItemTarget::StaticId)
+                    }
+                    _ => {}
+                }
+            }
         }
+
+        Arc::new(lang_items)
     }
 
     /// Salsa query. Look for a lang item, starting from the specified crate and recursively
@@ -126,34 +133,6 @@ pub(crate) fn lang_item_query(
             .find_map(|dep| db.lang_item(dep.crate_id, item.clone()))
     }
 
-    fn collect_lang_items(&mut self, db: &dyn DefDatabase, module: ModuleId) {
-        // Look for impl targets
-        let def_map = db.crate_def_map(module.krate);
-        let module_data = &def_map[module.local_id];
-        for impl_def in module_data.scope.impls() {
-            self.collect_lang_item(db, impl_def, LangItemTarget::ImplDefId)
-        }
-
-        for def in module_data.scope.declarations() {
-            match def {
-                ModuleDefId::TraitId(trait_) => {
-                    self.collect_lang_item(db, trait_, LangItemTarget::TraitId)
-                }
-                ModuleDefId::AdtId(AdtId::EnumId(e)) => {
-                    self.collect_lang_item(db, e, LangItemTarget::EnumId)
-                }
-                ModuleDefId::AdtId(AdtId::StructId(s)) => {
-                    self.collect_lang_item(db, s, LangItemTarget::StructId)
-                }
-                ModuleDefId::FunctionId(f) => {
-                    self.collect_lang_item(db, f, LangItemTarget::FunctionId)
-                }
-                ModuleDefId::StaticId(s) => self.collect_lang_item(db, s, LangItemTarget::StaticId),
-                _ => {}
-            }
-        }
-    }
-
     fn collect_lang_item<T>(
         &mut self,
         db: &dyn DefDatabase,
index e2251f2b7d1b4a4816c03a2426dd284416fe30e4..71c19ed138ba3edcbcc8d0da6efdb146b982735a 100644 (file)
@@ -163,7 +163,6 @@ macro_rules! sweep_each_query {
             hir::db::ExprScopesQuery
             hir::db::GenericParamsQuery
             hir::db::AttrsQuery
-            hir::db::ModuleLangItemsQuery
             hir::db::CrateLangItemsQuery
             hir::db::LangItemQuery
             hir::db::ImportMapQuery