diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2017-01-25 14:40:47 +1300 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2017-01-27 07:21:06 +1300 |
| commit | 36ad34d343c364f9d9570d5bea4d253882577f4e (patch) | |
| tree | d13da683d92c9e95129eff19f75583af43e1cf0b /src/librustc_save_analysis | |
| parent | 491b978822a56f23acf9ba46f90861958bc1e36c (diff) | |
| download | rust-36ad34d343c364f9d9570d5bea4d253882577f4e.tar.gz rust-36ad34d343c364f9d9570d5bea4d253882577f4e.zip | |
save-analysis: get tables directly, accomodating them being missing
Fixes an ICE when running with save-analsysis after an error
Diffstat (limited to 'src/librustc_save_analysis')
| -rw-r--r-- | src/librustc_save_analysis/dump_visitor.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/librustc_save_analysis/dump_visitor.rs b/src/librustc_save_analysis/dump_visitor.rs index 74521fe465b..f128167bbf6 100644 --- a/src/librustc_save_analysis/dump_visitor.rs +++ b/src/librustc_save_analysis/dump_visitor.rs @@ -111,11 +111,16 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> { fn nest_tables<F>(&mut self, item_id: NodeId, f: F) where F: FnOnce(&mut DumpVisitor<'l, 'tcx, 'll, D>) { - let old_tables = self.save_ctxt.tables; let item_def_id = self.tcx.hir.local_def_id(item_id); - self.save_ctxt.tables = self.tcx.item_tables(item_def_id); - f(self); - self.save_ctxt.tables = old_tables; + match self.tcx.tables.borrow().get(&item_def_id) { + Some(tables) => { + let old_tables = self.save_ctxt.tables; + self.save_ctxt.tables = tables; + f(self); + self.save_ctxt.tables = old_tables; + } + None => f(self), + } } pub fn dump_crate_info(&mut self, name: &str, krate: &ast::Crate) { |
