Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/import_map.rs')
-rw-r--r--crates/hir-def/src/import_map.rs34
1 files changed, 26 insertions, 8 deletions
diff --git a/crates/hir-def/src/import_map.rs b/crates/hir-def/src/import_map.rs
index f31f355cfa..67cf466276 100644
--- a/crates/hir-def/src/import_map.rs
+++ b/crates/hir-def/src/import_map.rs
@@ -13,7 +13,8 @@ use stdx::format_to;
use triomphe::Arc;
use crate::{
- AssocItemId, AttrDefId, Complete, FxIndexMap, ModuleDefId, ModuleId, TraitId,
+ AssocItemId, AttrDefId, Complete, FxIndexMap, InternedModuleId, ModuleDefId, ModuleId, TraitId,
+ attrs::AttrFlags,
db::DefDatabase,
item_scope::{ImportOrExternCrate, ItemInNs},
nameres::{DefMap, assoc::TraitItems, crate_def_map},
@@ -165,17 +166,34 @@ impl ImportMap {
}
} else {
match item {
- ItemInNs::Types(id) | ItemInNs::Values(id) => id.try_into().ok(),
+ ItemInNs::Types(id) | ItemInNs::Values(id) => match id {
+ ModuleDefId::ModuleId(it) => {
+ Some(AttrDefId::ModuleId(InternedModuleId::new(db, it)))
+ }
+ ModuleDefId::FunctionId(it) => Some(it.into()),
+ ModuleDefId::AdtId(it) => Some(it.into()),
+ ModuleDefId::EnumVariantId(it) => Some(it.into()),
+ ModuleDefId::ConstId(it) => Some(it.into()),
+ ModuleDefId::StaticId(it) => Some(it.into()),
+ ModuleDefId::TraitId(it) => Some(it.into()),
+ ModuleDefId::TypeAliasId(it) => Some(it.into()),
+ ModuleDefId::MacroId(it) => Some(it.into()),
+ ModuleDefId::BuiltinType(_) => None,
+ },
ItemInNs::Macros(id) => Some(id.into()),
}
};
let (is_doc_hidden, is_unstable, do_not_complete) = match attr_id {
None => (false, false, Complete::Yes),
Some(attr_id) => {
- let attrs = db.attrs(attr_id);
+ let attrs = AttrFlags::query(db, attr_id);
let do_not_complete =
- Complete::extract(matches!(attr_id, AttrDefId::TraitId(_)), &attrs);
- (attrs.has_doc_hidden(), attrs.is_unstable(), do_not_complete)
+ Complete::extract(matches!(attr_id, AttrDefId::TraitId(_)), attrs);
+ (
+ attrs.contains(AttrFlags::IS_DOC_HIDDEN),
+ attrs.contains(AttrFlags::IS_UNSTABLE),
+ do_not_complete,
+ )
}
};
@@ -239,15 +257,15 @@ impl ImportMap {
};
let attr_id = item.into();
- let attrs = &db.attrs(attr_id);
+ let attrs = AttrFlags::query(db, attr_id);
let item_do_not_complete = Complete::extract(false, attrs);
let do_not_complete =
Complete::for_trait_item(trait_import_info.complete, item_do_not_complete);
let assoc_item_info = ImportInfo {
container: trait_import_info.container,
name: assoc_item_name.clone(),
- is_doc_hidden: attrs.has_doc_hidden(),
- is_unstable: attrs.is_unstable(),
+ is_doc_hidden: attrs.contains(AttrFlags::IS_DOC_HIDDEN),
+ is_unstable: attrs.contains(AttrFlags::IS_UNSTABLE),
complete: do_not_complete,
};