Skip to content

Commit 2ed210d

Browse files
committed
Refactor more functionality into record_import_use
1 parent 8e61ca4 commit 2ed210d

File tree

2 files changed

+15
-30
lines changed

2 files changed

+15
-30
lines changed

src/librustc_resolve/lib.rs

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,7 +1197,14 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
11971197
}
11981198

11991199
#[inline]
1200-
fn record_import_use(&mut self, import_id: NodeId, name: Name) {
1200+
fn record_import_use(&mut self, name: Name, ns: Namespace, resolution: &ImportResolution<'a>) {
1201+
let import_id = resolution.id;
1202+
self.used_imports.insert((import_id, ns));
1203+
match resolution.target.as_ref().and_then(|target| target.target_module.def_id()) {
1204+
Some(DefId { krate, .. }) => { self.used_crates.insert(krate); }
1205+
_ => {}
1206+
};
1207+
12011208
if !self.make_glob_map {
12021209
return;
12031210
}
@@ -1596,24 +1603,12 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
15961603
debug!("(resolving name in module) import unresolved; bailing out");
15971604
return Indeterminate;
15981605
}
1599-
match import_resolution.target.clone() {
1600-
None => {
1601-
debug!("(resolving name in module) name found, but not in namespace {:?}",
1602-
namespace);
1603-
}
1604-
Some(target) => {
1605-
debug!("(resolving name in module) resolved to import");
1606-
// track used imports and extern crates as well
1607-
if record_used {
1608-
let id = import_resolution.id;
1609-
self.used_imports.insert((id, namespace));
1610-
self.record_import_use(id, name);
1611-
if let Some(DefId{krate: kid, ..}) = target.target_module.def_id() {
1612-
self.used_crates.insert(kid);
1613-
}
1614-
}
1615-
return Success((target, true));
1606+
if let Some(target) = import_resolution.target.clone() {
1607+
debug!("(resolving name in module) resolved to import");
1608+
if record_used {
1609+
self.record_import_use(name, namespace, &import_resolution);
16161610
}
1611+
return Success((target, true));
16171612
}
16181613
}
16191614
Some(..) | None => {} // Continue.
@@ -3531,13 +3526,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
35313526
};
35323527
if self.trait_item_map.contains_key(&(name, did)) {
35333528
add_trait_info(&mut found_traits, did, name);
3534-
let id = import.id;
3535-
self.used_imports.insert((id, TypeNS));
35363529
let trait_name = self.get_trait_name(did);
3537-
self.record_import_use(id, trait_name);
3538-
if let Some(DefId{krate: kid, ..}) = target.target_module.def_id() {
3539-
self.used_crates.insert(kid);
3540-
}
3530+
self.record_import_use(trait_name, TypeNS, &import);
35413531
}
35423532
}
35433533

src/librustc_resolve/resolve_imports.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -460,12 +460,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
460460

461461
let target = resolution.target.clone();
462462
if let Some(Target { target_module, binding, shadowable: _ }) = target {
463-
// track used imports and extern crates as well
464-
self.resolver.used_imports.insert((resolution.id, ns));
465-
self.resolver.record_import_use(resolution.id, name);
466-
if let Some(DefId { krate, .. }) = target_module.def_id() {
467-
self.resolver.used_crates.insert(krate);
468-
}
463+
self.resolver.record_import_use(name, ns, &resolution);
469464
(Success((target_module, binding)), true)
470465
} else {
471466
(Failed(None), false)

0 commit comments

Comments
 (0)