From 659859c537b5d867da5543bbe8a09f1323daa52f Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Wed, 25 Jan 2017 16:46:34 +1300 Subject: [PATCH 1/2] save-analysis: walk path expressions This is actually kinda hard to hit, but it fixes missing the `foo` in `for _ in foo {}`. --- src/librustc_save_analysis/dump_visitor.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/librustc_save_analysis/dump_visitor.rs b/src/librustc_save_analysis/dump_visitor.rs index 4e4b3570289..13e9e99fbb9 100644 --- a/src/librustc_save_analysis/dump_visitor.rs +++ b/src/librustc_save_analysis/dump_visitor.rs @@ -1369,6 +1369,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll, } fn visit_expr(&mut self, ex: &'l ast::Expr) { + debug!("visit_expr {:?}", ex.node); self.process_macro_use(ex.span, ex.id); match ex.node { ast::ExprKind::Call(ref _f, ref _args) => { @@ -1462,6 +1463,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll, ast::ExprKind::WhileLet(ref pattern, ref subexpression, ref block, _) => { let value = self.span.snippet(subexpression.span); self.process_var_decl(pattern, value); + debug!("for loop, walk sub-expr: {:?}", subexpression.node); visit::walk_expr(self, subexpression); visit::walk_block(self, block); } @@ -1556,6 +1558,10 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll, self.visit_expr(&arm.body); } + fn visit_path(&mut self, p: &'l ast::Path, id: NodeId) { + self.process_path(id, p, None); + } + fn visit_stmt(&mut self, s: &'l ast::Stmt) { self.process_macro_use(s.span, s.id); visit::walk_stmt(self, s) From 5e33c5f0ff92ca30b4d20803b6f919153336180d Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Wed, 25 Jan 2017 17:00:19 +1300 Subject: [PATCH 2/2] save-analysis: walk paths Catches generic types in paths --- src/librustc_save_analysis/dump_visitor.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/librustc_save_analysis/dump_visitor.rs b/src/librustc_save_analysis/dump_visitor.rs index 13e9e99fbb9..e5c41d08e1f 100644 --- a/src/librustc_save_analysis/dump_visitor.rs +++ b/src/librustc_save_analysis/dump_visitor.rs @@ -1359,6 +1359,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll, } self.write_sub_paths_truncated(path); + visit::walk_path(self, path); } ast::TyKind::Array(ref element, ref length) => { self.visit_ty(element);