From: Nick Cameron Date: Wed, 25 Jan 2017 01:40:47 +0000 (+1300) Subject: save-analysis: get tables directly, accomodating them being missing X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=36ad34d343c364f9d9570d5bea4d253882577f4e;p=rust.git save-analysis: get tables directly, accomodating them being missing Fixes an ICE when running with save-analsysis after an error --- 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 @@ fn nest_scope(&mut self, scope_id: NodeId, f: F) fn nest_tables(&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) {