Skip to content

Commit 3d940f3

Browse files
committed
Polished the type output feature.
1 parent cc734ab commit 3d940f3

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

Diff for: src/bin/rust_semver_public.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ extern crate rustc_interface;
77
extern crate syntax;
88

99
use log::debug;
10-
use rustc::{hir::def_id::*, middle::cstore::ExternCrate};
10+
use rustc::middle::cstore::ExternCrate;
1111
use rustc_driver::Callbacks;
1212
use rustc_interface::interface;
1313
use semverver::run_traversal;
@@ -45,10 +45,7 @@ fn main() {
4545
.crates()
4646
.iter()
4747
.flat_map(|crate_num| {
48-
let def_id = DefId {
49-
krate: *crate_num,
50-
index: CRATE_DEF_INDEX,
51-
};
48+
let def_id = crate_num.as_def_id();
5249

5350
match tcx.extern_crate(def_id) {
5451
Some(ExternCrate {

Diff for: src/bin/rust_semverver.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ extern crate rustc_metadata;
1010
extern crate syntax;
1111

1212
use log::debug;
13-
use rustc::{hir::def_id::*, middle::cstore::ExternCrate};
13+
use rustc::middle::cstore::ExternCrate;
1414
use rustc_driver::Callbacks;
1515
use rustc_interface::interface;
1616
use semverver::run_analysis;
@@ -64,10 +64,7 @@ fn main() {
6464
.crates()
6565
.iter()
6666
.flat_map(|crate_num| {
67-
let def_id = DefId {
68-
krate: *crate_num,
69-
index: CRATE_DEF_INDEX,
70-
};
67+
let def_id = crate_num.as_def_id();
7168

7269
match tcx.extern_crate(def_id) {
7370
Some(ExternCrate {

Diff for: src/traverse.rs

+11-5
Original file line numberDiff line numberDiff line change
@@ -84,22 +84,28 @@ pub fn run_traversal<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, new: DefId) {
8484
let mut mod_queue = VecDeque::new();
8585

8686
// Start off with the root module.
87-
mod_queue.push_back((new, Public));
87+
mod_queue.push_back((new, Vec::new(), Public));
8888

8989
// Pull a module from the queue, with its global visibility.
90-
while let Some((new_def_id, new_vis)) = mod_queue.pop_front() {
90+
while let Some((new_def_id, idents, new_vis)) = mod_queue.pop_front() {
9191
for item in tcx.item_children(new_def_id).to_vec() {
9292
let n_vis = get_vis(new_vis, item);
9393
match item.res {
9494
Def(Mod, n_def_id) => {
9595
if visited.insert(n_def_id) {
96-
mod_queue.push_back((n_def_id, n_vis));
96+
let mut idents = idents.clone();
97+
idents.push(format!("{}", item.ident));
98+
99+
mod_queue.push_back((n_def_id, idents, n_vis));
97100
}
98101
}
99-
Def(n_kind, n_def_id) if n_vis == Public => {
102+
Def(n_kind, _) if n_vis == Public => {
100103
match n_kind {
101104
TyAlias | Struct | Union | Enum | Trait => {
102-
println!("{:?}", n_def_id);
105+
let mut idents = idents.clone();
106+
idents.push(format!("{}", item.ident));
107+
108+
println!("{}", idents.join("::"));
103109
}
104110
_ => (),
105111
};

0 commit comments

Comments
 (0)