Skip to content

Commit e4ace6e

Browse files
committed
Move scope.extern_crates to return iterator and set module docs
1 parent 5d3fd84 commit e4ace6e

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

crates/hir-def/src/resolver.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ impl Resolver {
457457
def_map[module_id].scope.entries().for_each(|(name, def)| {
458458
res.add_per_ns(name, def);
459459
});
460+
460461
def_map[module_id].scope.legacy_macros().for_each(|(name, macs)| {
461462
macs.iter().for_each(|&mac| {
462463
res.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(mac)));
@@ -490,8 +491,11 @@ impl Resolver {
490491
.map(|id| ExternCrateDeclData::extern_crate_decl_data_query(db, id).name.clone())
491492
}
492493

493-
pub fn extern_crates_in_scope(&self) -> Vec<Name> {
494-
self.module_scope.def_map.extern_prelude().map(|(name, _)| name.clone()).collect()
494+
pub fn extern_crates_in_scope<'a>(&'a self) -> impl Iterator<Item = (Name, ModuleId)> + 'a {
495+
self.module_scope
496+
.def_map
497+
.extern_prelude()
498+
.map(|(name, module_id)| (name.clone(), module_id))
495499
}
496500

497501
pub fn traits_in_scope(&self, db: &dyn DefDatabase) -> FxHashSet<TraitId> {

crates/hir/src/semantics.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1684,9 +1684,8 @@ impl SemanticsScope<'_> {
16841684
)
16851685
}
16861686

1687-
pub fn extern_crates(&self) -> Vec<Name> {
1688-
println!("names in scope {:?}", self.resolver.names_in_scope(self.db.upcast()));
1689-
self.resolver.extern_crates_in_scope()
1687+
pub fn extern_crates(&self) -> impl Iterator<Item = (Name, Module)> + '_ {
1688+
self.resolver.extern_crates_in_scope().map(|(name, id)| (name, Module { id }))
16901689
}
16911690

16921691
pub fn extern_crate_decls(&self) -> impl Iterator<Item = Name> + '_ {

crates/ide-completion/src/completions/extern_crate.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Completion for extern crates
22
3-
use hir::Name;
3+
use hir::{HasAttrs, Name};
44
use ide_db::{FxHashSet, SymbolKind};
55
use syntax::{
66
ast::{self, NameRef},
@@ -18,7 +18,7 @@ pub(crate) fn complete_extern_crate(
1818
) {
1919
let imported_extern_crates: Vec<Name> = ctx.scope.extern_crate_decls().collect();
2020

21-
for name in ctx.scope.extern_crates() {
21+
for (name, module) in ctx.scope.extern_crates() {
2222
if imported_extern_crates.contains(&name) {
2323
continue;
2424
}
@@ -28,6 +28,7 @@ pub(crate) fn complete_extern_crate(
2828
ctx.source_range(),
2929
name.to_smol_str(),
3030
)
31+
.set_documentation(module.docs(db))
3132
.add_to(acc, ctx.db);
3233
}
3334
}

0 commit comments

Comments
 (0)