From 59fafc88893ab568f3eb18c31ad668ca50956828 Mon Sep 17 00:00:00 2001 From: Andy Russell Date: Mon, 4 Dec 2017 15:59:49 -0500 Subject: [PATCH] save-analysis: add parents to imports --- src/Cargo.lock | 12 +++++++++++- src/librustc_save_analysis/Cargo.toml | 2 +- src/librustc_save_analysis/dump_visitor.rs | 12 +++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Cargo.lock b/src/Cargo.lock index 229f217623f..8cf9c3f2381 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -1595,6 +1595,15 @@ dependencies = [ "serde_derive 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rls-data" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rls-span 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rls-rustc" version = "0.1.1" @@ -1964,7 +1973,7 @@ name = "rustc_save_analysis" version = "0.0.0" dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rls-data 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rls-data 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "rls-span 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc 0.0.0", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2839,6 +2848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" "checksum rls-analysis 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "171fcab0206870b8bec0d2c60dea66f820ce648a85abffc66f7e2df95c283e06" "checksum rls-data 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff85bb3a0daf9f64207a5530d90ae1c10f5515cef064c88b6821090678382b44" +"checksum rls-data 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8024f1feaca72d0aa4ae1e2a8d454a31b9a33ed02f8d0e9c8559bf53c267ec3c" "checksum rls-rustc 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b21ea952e9bf1569929abf1bb920262cde04b7b1b26d8e0260286302807299d2" "checksum rls-span 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d7c7046dc6a92f2ae02ed302746db4382e75131b9ce20ce967259f6b5867a6a" "checksum rls-vfs 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ffd34691a510938bb67fe0444fb363103c73ffb31c121d1e16bc92d8945ea8ff" diff --git a/src/librustc_save_analysis/Cargo.toml b/src/librustc_save_analysis/Cargo.toml index 6c8c9b73286..d8581f52d0d 100644 --- a/src/librustc_save_analysis/Cargo.toml +++ b/src/librustc_save_analysis/Cargo.toml @@ -15,7 +15,7 @@ rustc_data_structures = { path = "../librustc_data_structures" } rustc_typeck = { path = "../librustc_typeck" } syntax = { path = "../libsyntax" } syntax_pos = { path = "../libsyntax_pos" } -rls-data = "0.13" +rls-data = "0.14" rls-span = "0.4" # FIXME(#40527) should move rustc serialize out of tree rustc-serialize = "0.3" diff --git a/src/librustc_save_analysis/dump_visitor.rs b/src/librustc_save_analysis/dump_visitor.rs index fe6ad92ad00..0da535a922d 100644 --- a/src/librustc_save_analysis/dump_visitor.rs +++ b/src/librustc_save_analysis/dump_visitor.rs @@ -1234,10 +1234,13 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> { fn process_use_tree(&mut self, use_tree: &'l ast::UseTree, id: NodeId, - parent_item: &'l ast::Item, + root_item: &'l ast::Item, prefix: &ast::Path) { let path = &use_tree.prefix; - let access = access_from!(self.save_ctxt, parent_item); + let access = access_from!(self.save_ctxt, root_item); + let parent = self.save_ctxt.tcx.hir.opt_local_def_id(id) + .and_then(|id| self.save_ctxt.tcx.parent_def_id(id)) + .map(::id_from_def_id); match use_tree.kind { ast::UseTreeKind::Simple(ident) => { @@ -1276,6 +1279,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> { span, name: ident.to_string(), value: String::new(), + parent, }); } self.write_sub_paths_truncated(&path); @@ -1311,6 +1315,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> { span, name: "*".to_owned(), value: names.join(", "), + parent, }); } self.write_sub_paths(&path); @@ -1325,7 +1330,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> { span: path.span, }; for &(ref tree, id) in nested_items { - self.process_use_tree(tree, id, parent_item, &prefix); + self.process_use_tree(tree, id, root_item, &prefix); } } } @@ -1400,6 +1405,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc span, name: item.ident.to_string(), value: String::new(), + parent: None, }, ); }