rustc_metadata: split the Def description of a DefId from item_children.
This commit is contained in:
parent
adddfccf2b
commit
24aef24e1a
9 changed files with 95 additions and 109 deletions
|
@ -8,7 +8,7 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use rustc::middle::cstore::{CrateStore, ChildItem};
|
||||
use rustc::middle::cstore::CrateStore;
|
||||
use rustc::middle::privacy::{AccessLevels, AccessLevel};
|
||||
use rustc::hir::def::Def;
|
||||
use rustc::hir::def_id::{CrateNum, CRATE_DEF_INDEX, DefId};
|
||||
|
@ -64,38 +64,27 @@ impl<'a, 'b, 'tcx> LibEmbargoVisitor<'a, 'b, 'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn visit_mod(&mut self, did: DefId) {
|
||||
for item in self.cstore.item_children(did) {
|
||||
match item.def {
|
||||
Def::Mod(did) |
|
||||
Def::Trait(did) |
|
||||
Def::Struct(did) |
|
||||
Def::Union(did) |
|
||||
Def::Enum(did) |
|
||||
Def::TyAlias(did) |
|
||||
Def::Fn(did) |
|
||||
Def::Method(did) |
|
||||
Def::Static(did, _) |
|
||||
Def::Const(did) => self.visit_item(did, item),
|
||||
_ => {}
|
||||
}
|
||||
pub fn visit_mod(&mut self, def_id: DefId) {
|
||||
for item in self.cstore.item_children(def_id) {
|
||||
self.visit_item(item.def_id);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_item(&mut self, did: DefId, item: ChildItem) {
|
||||
let inherited_item_level = if item.vis == Visibility::Public {
|
||||
fn visit_item(&mut self, def_id: DefId) {
|
||||
let vis = self.cstore.visibility(def_id);
|
||||
let inherited_item_level = if vis == Visibility::Public {
|
||||
self.prev_level
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let item_level = self.update(did, inherited_item_level);
|
||||
let item_level = self.update(def_id, inherited_item_level);
|
||||
|
||||
if let Def::Mod(did) = item.def {
|
||||
if let Some(Def::Mod(_)) = self.cstore.describe_def(def_id) {
|
||||
let orig_level = self.prev_level;
|
||||
|
||||
self.prev_level = item_level;
|
||||
self.visit_mod(did);
|
||||
self.visit_mod(def_id);
|
||||
self.prev_level = orig_level;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue