Skip to content

Commit 554dd21

Browse files
Merge #6910
6910: Remove `module_lang_items` r=jonas-schievink a=jonas-schievink It isn't used anywhere except in `crate_lang_items`. Remove it to slightly reduce memory usage and simplify the code. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
2 parents 785860b + 21b68a3 commit 554dd21

File tree

4 files changed

+32
-57
lines changed

4 files changed

+32
-57
lines changed

crates/hir/src/db.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ pub use hir_def::db::{
66
FunctionDataQuery, GenericParamsQuery, ImplDataQuery, ImportMapQuery, InternConstQuery,
77
InternDatabase, InternDatabaseStorage, InternEnumQuery, InternFunctionQuery, InternImplQuery,
88
InternStaticQuery, InternStructQuery, InternTraitQuery, InternTypeAliasQuery, InternUnionQuery,
9-
ItemTreeQuery, LangItemQuery, ModuleLangItemsQuery, StaticDataQuery, StructDataQuery,
10-
TraitDataQuery, TypeAliasDataQuery, UnionDataQuery,
9+
ItemTreeQuery, LangItemQuery, StaticDataQuery, StructDataQuery, TraitDataQuery,
10+
TypeAliasDataQuery, UnionDataQuery,
1111
};
1212
pub use hir_expand::db::{
1313
AstDatabase, AstDatabaseStorage, AstIdMapQuery, InternEagerExpansionQuery, InternMacroQuery,

crates/hir_def/src/db.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ use crate::{
1616
lang_item::{LangItemTarget, LangItems},
1717
nameres::CrateDefMap,
1818
AttrDefId, ConstId, ConstLoc, DefWithBodyId, EnumId, EnumLoc, FunctionId, FunctionLoc,
19-
GenericDefId, ImplId, ImplLoc, ModuleId, StaticId, StaticLoc, StructId, StructLoc, TraitId,
20-
TraitLoc, TypeAliasId, TypeAliasLoc, UnionId, UnionLoc,
19+
GenericDefId, ImplId, ImplLoc, StaticId, StaticLoc, StructId, StructLoc, TraitId, TraitLoc,
20+
TypeAliasId, TypeAliasLoc, UnionId, UnionLoc,
2121
};
2222

2323
#[salsa::query_group(InternDatabaseStorage)]
@@ -95,9 +95,6 @@ pub trait DefDatabase: InternDatabase + AstDatabase + Upcast<dyn AstDatabase> {
9595
#[salsa::invoke(Attrs::attrs_query)]
9696
fn attrs(&self, def: AttrDefId) -> Attrs;
9797

98-
#[salsa::invoke(LangItems::module_lang_items_query)]
99-
fn module_lang_items(&self, module: ModuleId) -> Option<Arc<LangItems>>;
100-
10198
#[salsa::invoke(LangItems::crate_lang_items_query)]
10299
fn crate_lang_items(&self, krate: CrateId) -> Arc<LangItems>;
103100

crates/hir_def/src/lang_item.rs

Lines changed: 28 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use rustc_hash::FxHashMap;
88
use syntax::SmolStr;
99

1010
use crate::{
11-
db::DefDatabase, AdtId, AttrDefId, CrateId, EnumId, FunctionId, ImplId, ModuleDefId, ModuleId,
12-
StaticId, StructId, TraitId,
11+
db::DefDatabase, AdtId, AttrDefId, CrateId, EnumId, FunctionId, ImplId, ModuleDefId, StaticId,
12+
StructId, TraitId,
1313
};
1414

1515
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -84,27 +84,34 @@ impl LangItems {
8484

8585
let crate_def_map = db.crate_def_map(krate);
8686

87-
crate_def_map
88-
.modules
89-
.iter()
90-
.filter_map(|(local_id, _)| db.module_lang_items(ModuleId { krate, local_id }))
91-
.for_each(|it| lang_items.items.extend(it.items.iter().map(|(k, v)| (k.clone(), *v))));
92-
93-
Arc::new(lang_items)
94-
}
87+
for (_, module_data) in crate_def_map.modules.iter() {
88+
for impl_def in module_data.scope.impls() {
89+
lang_items.collect_lang_item(db, impl_def, LangItemTarget::ImplDefId)
90+
}
9591

96-
pub(crate) fn module_lang_items_query(
97-
db: &dyn DefDatabase,
98-
module: ModuleId,
99-
) -> Option<Arc<LangItems>> {
100-
let _p = profile::span("module_lang_items_query");
101-
let mut lang_items = LangItems::default();
102-
lang_items.collect_lang_items(db, module);
103-
if lang_items.items.is_empty() {
104-
None
105-
} else {
106-
Some(Arc::new(lang_items))
92+
for def in module_data.scope.declarations() {
93+
match def {
94+
ModuleDefId::TraitId(trait_) => {
95+
lang_items.collect_lang_item(db, trait_, LangItemTarget::TraitId)
96+
}
97+
ModuleDefId::AdtId(AdtId::EnumId(e)) => {
98+
lang_items.collect_lang_item(db, e, LangItemTarget::EnumId)
99+
}
100+
ModuleDefId::AdtId(AdtId::StructId(s)) => {
101+
lang_items.collect_lang_item(db, s, LangItemTarget::StructId)
102+
}
103+
ModuleDefId::FunctionId(f) => {
104+
lang_items.collect_lang_item(db, f, LangItemTarget::FunctionId)
105+
}
106+
ModuleDefId::StaticId(s) => {
107+
lang_items.collect_lang_item(db, s, LangItemTarget::StaticId)
108+
}
109+
_ => {}
110+
}
111+
}
107112
}
113+
114+
Arc::new(lang_items)
108115
}
109116

110117
/// Salsa query. Look for a lang item, starting from the specified crate and recursively
@@ -126,34 +133,6 @@ impl LangItems {
126133
.find_map(|dep| db.lang_item(dep.crate_id, item.clone()))
127134
}
128135

129-
fn collect_lang_items(&mut self, db: &dyn DefDatabase, module: ModuleId) {
130-
// Look for impl targets
131-
let def_map = db.crate_def_map(module.krate);
132-
let module_data = &def_map[module.local_id];
133-
for impl_def in module_data.scope.impls() {
134-
self.collect_lang_item(db, impl_def, LangItemTarget::ImplDefId)
135-
}
136-
137-
for def in module_data.scope.declarations() {
138-
match def {
139-
ModuleDefId::TraitId(trait_) => {
140-
self.collect_lang_item(db, trait_, LangItemTarget::TraitId)
141-
}
142-
ModuleDefId::AdtId(AdtId::EnumId(e)) => {
143-
self.collect_lang_item(db, e, LangItemTarget::EnumId)
144-
}
145-
ModuleDefId::AdtId(AdtId::StructId(s)) => {
146-
self.collect_lang_item(db, s, LangItemTarget::StructId)
147-
}
148-
ModuleDefId::FunctionId(f) => {
149-
self.collect_lang_item(db, f, LangItemTarget::FunctionId)
150-
}
151-
ModuleDefId::StaticId(s) => self.collect_lang_item(db, s, LangItemTarget::StaticId),
152-
_ => {}
153-
}
154-
}
155-
}
156-
157136
fn collect_lang_item<T>(
158137
&mut self,
159138
db: &dyn DefDatabase,

crates/ide_db/src/apply_change.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ impl RootDatabase {
163163
hir::db::ExprScopesQuery
164164
hir::db::GenericParamsQuery
165165
hir::db::AttrsQuery
166-
hir::db::ModuleLangItemsQuery
167166
hir::db::CrateLangItemsQuery
168167
hir::db::LangItemQuery
169168
hir::db::ImportMapQuery

0 commit comments

Comments
 (0)